假设我有一个如下定义的二叉树数据结构
type 'a tree =
| Node of 'a tree * 'a * 'a tree
| Nil
Run Code Online (Sandbox Code Playgroud)
我有一个树的实例如下:
let x =
Node
(Node (Node (Nil,35,Node (Nil,40,Nil)),48,Node (Nil,52,Node (Nil,53,Nil))),
80,Node (Node (Nil,82,Node (Nil,83,Nil)),92,Node (Nil,98,Nil)))
Run Code Online (Sandbox Code Playgroud)
我正在尝试将树打印成易于理解的东西.最好,我想在控制台窗口中打印树,如下所示:
_______ 80 _______
/ \
_ 48 _ _ 92 _
/ \ / \
35 52 82 98
\ \ /
40 53 83
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让我的树以这种格式输出?
作为一个时间传递活动,我决定在python中实现一个Tree(like)结构.
我实现了一个Node类(这里仅用于此目的),如下所示:
class Node:
def __init__(self, name, parent, *data):
self.name = name
self.parent = parent
self.data = data
self.children = []
self.is_root = False
def __repr__(self):
return 'Node '+repr(self.name)
def dic(self):
retval = {self:[]}
for i in self.children:
retval[self].append(i.dic())
return retval
def display(self): # Here
pass
def has_children(self):
return bool(self.children)
def get_parent(self):
return self.parent
def add_child(self, name, *data):
child = Node(name, self,*data)
self.children.append(child)
return child
Run Code Online (Sandbox Code Playgroud)
如您所见,该display功能未实现.
这是一个示例树.
A = Node('A',Node)
A.is_root = True
B …Run Code Online (Sandbox Code Playgroud)