Descripción del Título:
Dado un árbol de búsqueda binario, encuentre el ancestro común más cercano de dos nodos especificados en el árbol.
La definición del ancestro común más cercano en la Enciclopedia Baidu es: "Para dos nodos pyq del árbol enraizado T, el ancestro común más cercano se expresa como un nodo x, de modo que x es el ancestro de pyq y la profundidad de x es lo más grande posible ( Un nodo también puede ser su propio antepasado ) ".
Por ejemplo, dado el siguiente árbol de búsqueda binaria: root = [6,2,8,0,4,7,9, null, null, 3,5]
Ejemplo 1:
Entrada: la raíz = [6,2,8,0,4,7,9, nulo, nulo, 3,5], P = 2, Q =. 8 Salida: 6 Explicación: nodo2
y el8
ancestro común del nodo es6。
Ejemplo 2:
Entrada: raíz = [6,2,8,0,4,7,9, nulo, nulo, 3,5], p = 2, q = 4 Salida: 2 Explicación: El ancestro común más cercano del nodo 2 y el nodo 4 es 2, porque por definición el nodo ancestro común más cercano puede ser el nodo mismo.
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def lowestCommonAncestor(self, root, p, q):
"""
:type root: TreeNode
:type p: TreeNode
:type q: TreeNode
:rtype: TreeNode
"""
if not root:return None
if p.val == q.val:return p
while root:
if root.val < p.val and root.val <q.val:
root=root.right
if root.val > p.val and root.val > q.val:
root=root.left
else:
return root