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 }
  • 相关阅读:
    php && 逻辑与运算符使用说明
    php无穷递归算法
    PHP foreach 用法
    centos安装g++
    php 编译中apxs
    shutdown()
    C语言strtok()函数:字符串分割
    细谈select函数(C语言)
    setsockopt的作用
    STL之七:STL各种容器的使用时机详解
  • 原文地址:https://www.cnblogs.com/zle1992/p/7753161.html
Copyright © 2011-2022 走看看