Форум сайта python.su
class Node:
def __init__(self, val):
self.l_child = None
self.r_child = None
self.data = val
def binary_insert(root, node):
if root is None:
root = node
else:
if root.data > node.data:
if root.l_child is None:
root.l_child = node
else:
binary_insert(root.l_child, node)
else:
if root.r_child is None:
root.r_child = node
else:
binary_insert(root.r_child, node)
def in_order_print(root):
if not root:
return
in_order_print(root.l_child)
print(root.data)
in_order_print(root.r_child)
def pre_order_print(root):
if not root:
return
print(root.data)
pre_order_print(root.l_child)
pre_order_print(root.r_child)
Не могу понять как написать метод или функцию ,которая в данном случае удаляла елементы из дерева.
Но при этом выполнялись условия:1Если вершина v0 не имеет сыновей, просто удаляем ее.
2.Если вершина v0 имеет одного сына, удаляем v0 и заменяем ее сыном.
3.Если v0 имеет двух сыновей, находим правого сына v1 вершины v0, а затем находим левого сына вершины v1 (если он существует). Продолжаем выбирать левых сыновей каждой найденной вершины, пока не найдется такая вершина v, в которой не будет левого сына. Заменим v0 на v и сделаем правого сына вершины v левым сыном отца вершины v
Офлайн