zoukankan      html  css  js  c++  java
  • 235. Lowest Common Ancestor of a Binary Search Tree(LCA最低公共祖先)

     

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BST.

    According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes v and w as the lowest node in T that has both v and w as descendants (where we allow a node to be a descendant of itself).”

            _______6______
           /              
        ___2__          ___8__
       /              /      
       0      _4       7       9
             /  
             3   5
    

    For example, the lowest common ancestor (LCA) of nodes 2 and 8 is 6. Another example is LCA of nodes 2and 4 is 2, since a node can be a descendant of itself according to the LCA definition.

    思路:因为是bst, 如果root,的值介于pq之间,root就是共同祖先。

    root不是共同祖先,则递归地判断左右子树是不是公共祖先。

    递归版:

    1 class Solution {
    2     public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
    3         if((root.val-p.val)*(root.val-q.val)<=0) return root;
    4         return lowestCommonAncestor((root.val-p.val)>0?root.left:root.right, p, q);
    5     }
    6 }

    循环版:

    1 class Solution {
    2     public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
    3         while((root.val-p.val)*(root.val-q.val)>0)
    4             root = ((root.val-p.val)>0?root.left:root.right);
    5         return root;
    6     
    7     }
    8 }
  • 相关阅读:
    水晶报表 VS2010 应用
    crystalreport使用方法
    spring MVC核心思想
    一台服务器配置多个TOMCAT
    SQL server索引
    锁机制
    JAVA书籍
    Live 直播过程
    html5 video微信浏览器视频不能自动播放
    设计模式 抽象工厂模式
  • 原文地址:https://www.cnblogs.com/zle1992/p/7753161.html
Copyright © 2011-2022 走看看