2 Ноя 2021 в 19:44
46 +1
0
Ответы
1

Для нахождения нод (общего предка) двух узлов в дереве необходимо выполнить следующие шаги:

Найти путь от корня дерева до каждого из узлов.Последовательно просматривать пути и находить наименьший общий узел.

Пример кода на Python:

class Node:
def __init__(self, value):
self.value = value
self.left = None
self.right = None
def findPath(root, path, k):
if root is None:
return False
path.append(root.value)
if root.value == k:
return True
if ((root.left != None and findPath(root.left, path, k)) or
(root.right != None and findPath(root.right, path, k))):
return True
path.pop()
return False
def findLCA(root, n1, n2):
path1 = []
path2 = []
if (not findPath(root, path1, n1) or not findPath(root, path2, n2)):
return -1
i = 0
while (i < len(path1) and i < len(path2)):
if path1[i] != path2[i]:
break
i += 1
return path1[i - 1]
# Create a binary tree
root = Node(1)
root.left = Node(2)
root.right = Node(3)
root.left.left = Node(4)
root.left.right = Node(5)
root.right.left = Node(6)
root.right.right = Node(7)
n1 = 495
n2 = 852
lca = findLCA(root, n1, n2)
print("Lowest common ancestor of %d and %d is %d" % (n1, n2, lca))

Замените значения узлов в дереве и значения переменных n1 и n2 на 495 и 852. Выполните код, чтобы найти общего предка нод 495 и 852.

17 Апр в 09:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир