Удаление корня из дерева в python

Я выполняю удаление узла из двоичного дерева поиска в python. Я застрял в кромке. Рассмотрим следующий код:

class Node(): def __init__(self, value, left=None, right=None): self.value = value self.left = left self.right = right root = Node(5) root.right = Node(10) 

Как реализовать функцию, которая удаляет корень. Я не хочу, чтобы функция возвращала новый корень. В C ++ я могу изменить указатель, чтобы сделать корневую точку своим дочерним элементом, однако в переменных python используются метки . Возможно ли это сделать в python?

One Solution collect form web for “Удаление корня из дерева в python”

Невозможно заменить root и заменить его там, где появляется экземпляр, на который указывает имя root .

Единственный способ добиться того, что вы хотите, – это изменить root чтобы дублировать дочерний узел.

 def delete(node, inheritLeft=True): child = node.left if inheritLeft else node.right node.value = child.value node.left = child.left node.right = child.right 

(Очевидно, вы, возможно, захотите сделать что-то умнее в выборе того, какой узел наследовать).

Python - лучший язык программирования в мире.