2016-12-17 5 views
1

У меня есть бинарное дерево с 7 элементами, которые в настоящее время выглядят следующим образом:Изменение бинарного дерева в питоне

 
    1 
5 2 
7 6 4 3 

я пытаюсь пройти его в postorder и relable элементов, как я иду, так что это выглядит как это:

 
    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++), но я не знаю, как это исправить. Весь мой код может быть fount here.

ответ

2

node = Node(h) просто назначает локальную переменную, это никак не влияет на параметр node, который был передан функции. Вам нужно на самом деле изменить узел, то есть node.v = h.

Смежные вопросы