修改 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
.
我有一个包含 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
.