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

  • 相关阅读:
    2.airflow参数简介
    KETTLE元数据表
    KETTLE监控
    KETTLE设置变量
    KETTLE集群搭建
    KETTLE并行
    Android TextView setText内嵌html标签
    Android Fragment实现分屏
    Java基础之String,StringBuilder,StringBuffer
    踩过的坑之-----selector
  • 原文地址:https://www.cnblogs.com/George1994/p/10637560.html
Copyright © 2011-2022 走看看