修改 python 中的二叉树

Modify a binary tree in python

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

   1个
 5 2
7 6 4 3

我正在尝试按后序遍历它并关联元素,因此它看起来像这样:

    7
  3 6
1 2 4 5

使用以下函数,这是我的一部分 Tree class:

定义相关(自我,h):
    如果 self.root 不是 None:
        self._relable(self.root, h)
def _relable(自我,节点,h):
    如果节点不是 None:
        self._relable(node.l, h-2)
        self._relable(node.r, h-1)
        节点=节点(h)

我的 Tree class 的其余部分与 here 大致相同。 我通过 add 循环输入数字 1-7 来填充树。

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

中找到

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