68-I. El ancestro común más cercano del árbol de búsqueda binaria (simple)

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: nodo 2 y el 8 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

 

Supongo que te gusta

Origin blog.csdn.net/weixin_38664232/article/details/105013262
Recomendado
Clasificación