python如何递归生成树?
class Tree:
def __init__(self, label):
self.root = label
self.child = {}
def set_child(self, label, relate):
self.child[label] = relate
def get_root(self):
return self.root
def get_child(self):
return self.child
这么一颗树结构,该如何写
def create_tree():
create_tree()
来调用树结构递归生成树呢?
如果把对象写在递归函数里,每次都会初始化,所以不行,如果写在函数外面,又无法访问到树的对象,该如何写呢?
还是只能使用字典来生成树?
我尝试使用了
def create_tree():
tree = Tree()
显示是必须传入参数,如果传参,又回初始化树结构,求高人指点
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
好像比較懂你的意思了, 試寫了一個
Tree
, 不知道你覺得怎麼樣XDimport
and create tree:測試
__str__
跟__repr__
:測試 iterator 和 relation iterator:
測試 dfs 和 bfs:
這邊還有一個問題是, 不知道你原始的資料長甚麼樣子, 所以我無法猜測你怎麼 create tree。
如果是手動一個一個加入 child 的話應該就像上面那樣, create 跟 recursion 沒什麼關係, traverse 的時候才跟 recursion 有關。
除非你有一個對應於 tree 結構的資料, 字典, json 之類的, 然後你想要依資料自動生成, 可能這種情況才會用 recursion 來 build tree。
因為我對於你實際的輸入不是很了解, 但是我猜你想問的是下面這件事情, 我舉個想像的例子說明這一點, 假設我們的原始資料長這樣:
我必須要將這樣子的資料建出一個
Tree
來, 這邊的確就跟 recursion 有關了, 首先我在Tree
中增加一個 classmethod:接著我可以用下面這種方式 recursive 地 create tree:
測試:
結果:
P.S. 有問題歡迎討論!
我回答過的問題: Python-QA
大概这样写:
https://segmentfault.com/n/13...