【发布时间】:2015-06-25 11:07:46
【问题描述】:
我正在使用本书中描述的二叉树 problem solving with algorithms and data structures
class BinaryTree:
def __init__(self,rootObj):
self.key = rootObj
self.leftChild = None
self.rightChild = None
已经有如下定义的前序遍历方法。
def preorder(tree):
if tree:
print(tree.self.key)
preorder(tree.getLeftChild())
preorder(tree.getRightChild())
我只想添加访问的节点列表的返回值。所以我可以做类似的事情
for i in preorder(tree):
etc...
我无法从递归方法返回列表。递归在遇到“返回”时立即停止,我尝试过使用
return [tree.self.key] + preorder()
或者
yield ...
有什么想法吗?
【问题讨论】:
-
您遇到什么错误?是关于连接 None 和 list 的吗?
-
1)。
preorder()似乎是一个辅助函数,实际上并不是BinaryTree类的方法,因此将其称为方法有点令人困惑。 2)。如果tree是BinaryTree的一个实例,那么tree.self.key是错误的。 3)。在 Python 中,您很少需要 getter(或 setter)方法,您只需直接访问属性即可。例如,preorder(tree.leftChild).
标签: python recursion binary-tree preorder