在python中修改二叉树

时间:2016-12-17 18:23:12

标签: python binary-tree

我有一个包含7个元素的二叉树,目前看起来像这样:

   1
 5   2
7 6 4 3

我试图在后序中遍历它并在我去的时候重新加入元素,所以它看起来像这样:

    7
  3  6
1 2 4 5

使用以下函数,它是我的Tree类的一部分:

def relable(self, h):
    if self.root is not None:
        self._relable(self.root, h)
def _relable(self, node, h):
    if node is not None:
        self._relable(node.l, h-2)
        self._relable(node.r, h-1)
        node = Node(h)

我的Tree课程的其余部分或多与here课程相同。 我通过add循环编号1-7来填充树。

但是,当我调用tree.relable(7),然后打印树时,树是相同的。 我猜这与Python传递参数的方式有关(我是一名C ++程序员),但我不知道如何解决这个问题。 我的整个代码可以是here

1 个答案:

答案 0 :(得分:2)

node = Node(h)只是分配一个局部变量,它对传递给函数的node参数没有任何影响。您需要实际修改节点,即node.v = h