UBIGraph
import xmlrpclib import random class Node: def __init__(self,num): self.num = num self.left = None self.right = None def get_right(self): return self.right def set_right(self,node): self.right = node def get_left(self): return self.left def set_left(self,node): self.left = node def num(self): self.num current_num = 0 def add(node): global current_num if random.randint(0,1)==0: print("right") if node.get_right() is None: current_num+=1 node.set_right(Node(current_num)) UbiG.new_vertex_w_id(current_num) UbiG.new_edge(node.num,current_num) else: add(node.get_right()) else: print("left") if node.get_left() is None: current_num+=1 node.set_left(Node(current_num)) UbiG.new_vertex_w_id(current_num) UbiG.new_edge(node.num,current_num) else: add(node.get_left()) random.seed(None) server_url = "http://127.0.0.1:20738/RPC2" server = xmlrpclib.Server(server_url) UbiG = server.ubigraph UbiG.clear() root = Node(current_num) UbiG.new_vertex_w_id(root.num) while 1: raw_input("please enter") print("call add") add(root)
binary-tree生成の自作サンプルです。
enter押しまくったらぽんぽん増えます。
UBIGraphでgを押して重力を有効にしてやるとある程度奇麗に見えます。
後完全にpython忘れ去ってるのでコードはunkすぎて目が覆いたく成るぐらいですがご了承ください。
一応何をやっているかというと、uniqueなidをnode毎に割り当てて、そいつでそのままvertexを作成。
そんでもって、自分と親ノードを繋いでいるだけです。