我有一个包含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。
答案 0 :(得分:2)
node = Node(h)
只是分配一个局部变量,它对传递给函数的node
参数没有任何影响。您需要实际修改节点,即node.v = h
。