我正在尝试定义一种递归方法来遍历树的所有节点。我将树定义如下:
class Tree(object):
def __init__(self, value, lson=None, sibling=None):
self.value = value
if lson:
self.lson = Tree(lson)
else:
self.lson = None
if sibling:
self.sibling = Tree(sibling)
else:
self.sibling = None
def __str__(self):
return str(self.value)
我有以下有效的功能:
def walk_tree(t):
# walk in order
print t
if t.lson:
walk_tree(t.lson)
if t.sibling:
walk_tree(t.sibling)
return t
如何将其转换为实例方法?
def walk_tree(self):
# walk in order
print self.value
if self.lson:
self.walk_tree(self.lson)
if self.sibling:
self.walk_tree(self.sibling)
return self
这将导致Max recursion depth error...
一个。这是您如何实现递归方法的吗?
湾。这里有理由使用yield
吗?
C。这里有理由使用@staticmethod
哪个接收Tree
实例?