Для нахождения нод (общего предка) двух узлов в дереве необходимо выполнить следующие шаги:
Пример кода на Python:
Замените значения узлов в дереве и значения переменных n1 и n2 на 495 и 852. Выполните код, чтобы найти общего предка нод 495 и 852.
Для нахождения нод (общего предка) двух узлов в дереве необходимо выполнить следующие шаги:
Найти путь от корня дерева до каждого из узлов.Последовательно просматривать пути и находить наименьший общий узел.Пример кода на 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.