Удаление корня из дерева в 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 

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

  • в чем разница между functools.wraps и update_wrapper
  • GAE Python: статические файлы не загружаются в localhost, но загружаются отлично, когда приложение развертывается на appspot
  • Как удалить все объекты для модели NDB в Google App Engine для python?
  • Внедрение кометы / сервера в Google App Engine в Python
  • написать несколько строк в файле в python
  • python - эффективный способ проверки наличия части строки в списке
  • как сохранить структуру словаря
  • Как найти все подмножества множества с ровно n элементами?
  • Python - лучший язык программирования в мире.