如何找出二叉树中的多个左子级? (蟒蛇)

时间:2019-04-01 12:30:19

标签: python tree

我需要弄清楚二叉树中剩余子级的数量。有很多方法可以做到,但是我想知道为什么下面的代码不起作用。

def leftChildren(self):
        leftChildren = []
        if self != None:
            leftChildren.append(self.v)
            if self.l:
                leftChildren = leftChildren + self.l.leftChildren()
            if self.r:
                self.r.leftChildren()
        return leftChildren

哪里出了问题以及如何解决?

1 个答案:

答案 0 :(得分:0)

我怀疑:

self.r返回合适的孩子

self.l返回剩下的孩子

所有孩子都是结点或树

self.v返回节点/叶子的值

因此,在查看您的代码时,我可以看到

  • 未正确计算树的右侧。
  • 您可能应该存储其余值,以便仅在顶部对其进行一次计算(个人建议,无需这样做)
  • func的值和名称是共享的,这可能会引起混淆
  • 我建议重命名为函数和变量,以避免与right / left和left = left混淆
  • 我认为您不需要检查价值。如果您的二叉树计算正确。
  • 您确实需要提供完整的代码,或者至少提供最少的可行运行。

这是一个快速草稿:

def getremainingChildren(self):
    self.remainingChildren = []
    self.remainingChildren.append(self.v)
    if self.l:
        self.remainingChildren += self.l.getremainingChildren()
    if self.r:
        self.remainingChildren += self.r.getremainingChildren()
    return self.remainingChildren