zoukankan      html  css  js  c++  java
  • 235. 二叉搜索树的最近公共祖先

    235. 二叉搜索树的最近公共祖先

    题意

    给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。

    解题思路

    • 利用BST的性质,如果该结点小于给定的其中一个结点,并且大于另外一个给定的结点,那么则认为该点是两个结点的最近公共祖先;

    实现

    class Solution(object):
       def lowestCommonAncestor(self, root, p, q):
           """
          递归实现
          :type root: TreeNode
          :type p: TreeNode
          :type q: TreeNode
          :rtype: TreeNode
          """
           if p.val < root.val and q.val < root.val:
               return self.lowestCommonAncestor(root.left, p, q)
           elif p.val > root.val and q.val > root.val:
               return self.lowestCommonAncestor(root.right, p, q)
           return root
       
       def lowestCommonAncestor(self, root, p, q):
           """
          迭代实现
          :type root: TreeNode
          :type p: TreeNode
          :type q: TreeNode
          :rtype: TreeNode
          """
           while root:
               if p.val < root.val and q.val < root.val:
                   root = root.left
               elif p.val > root.val and q.val > root.val:
                   root = root.right
               else:
                   return root

  • 相关阅读:
    java中的Class类
    装机
    CSS入门
    初级HTML
    IO加强
    Lambda表达式
    IOStream-基础
    JavaSE阶段基础内容(不包括I/O,常用类,集合)
    markdown学习
    Log4j配置详解
  • 原文地址:https://www.cnblogs.com/George1994/p/10637560.html
Copyright © 2011-2022 走看看