我一直在尝试创建一个程序来接受用户输入(一个整数)并使用递归为树中的每个级别递增该整数:
修改:
这是类__init__
的{{1}}方法:
set_depth
我一直得到最大的递归深度错误,任何帮助?
答案 0 :(得分:2)
如果我理解正确,您正在尝试设置现有树中每个节点的深度:
class BTNode(object):
def __init__(self, value, left=None, right=None):
self.value = value
self.left = left
self.right = right
self.depth = 0
def set_depth(self, depth):
if self.left is not None:
self.left.set_depth(depth+1)
if self.right is not None:
self.right.set_depth(depth+1)
self.depth = depth
答案 1 :(得分:1)
您没有使用number_of_depth参数执行任何操作(无增量...)。 我的猜测是,BTNode(number_of_depth)在每次递归中返回相同的子实例,因此您不会有终端条件。
只是一个猜测。 试试这个:
def set_depth(self, number_of_depth):
#Set depth of root node to 0, then all of its children to 1, and so on
child = BTNode(number_of_depth)
if self.left is None and self.right is None:
return self.number_of_depth
else:
if self.left is not None or self.right is not None:
self.number_of_depth += 1
self.set_depth(number_of_depth)
child.left = child