def print_tree(self, node = None):
if node is None:
#?????
import pygraphviz
self.printer = pygraphviz.AGraph(directed = True, strict = False)
#????
self.printer.node_attr['shape'] = 'circle'
self.printer.node_attr['color'] = 'red'
self.printer.node_attr['fontcolor'] = 'white'
self.printer.node_attr['style'] = 'filled'
#?????
node = self.tree
self.printer.add_node(node.data, color = node.colour)
if node.Lchild or node.Rchild:
if node.Lchild:
#?????????????????
self.printer.add_node(node.Lchild.data, color = node.Lchild.colour)
#?????
self.printer.add_edge(node.data, node.Lchild.data, label = str(node.Lchild.father))
#?????
self.print_tree(node.Lchild)
else:
#?????????????
self.printer.add_node('Lchild ' + str(node.data), style = 'invis')
self.printer.add_edge(node.data, 'Lchild ' + str(node.data), style = 'invis')
if node.Rchild:
#?????????????????
self.printer.add_node(node.Rchild.data, color = node.Rchild.colour)
#?????
self.printer.add_edge(node.data, node.Rchild.data, label = str(node.Rchild.father))
#?????
self.print_tree(node.Rchild)
else:
#?????????????
self.printer.add_node('Rchild ' + str(node.data), style = 'invis')
self.printer.add_edge(node.data, 'Rchild ' + str(node.data), style = 'invis')
评论列表
文章目录