使用递归计算树的深度

时间:2014-03-16 18:32:53

标签: python recursion tree

我一直在尝试创建一个程序来接受用户输入(一个整数)并使用递归为树中的每个级别递增该整数:

修改: 这是类__init__的{​​{1}}方法:

set_depth

我一直得到最大的递归深度错误,任何帮助?

2 个答案:

答案 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