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 }
  • 相关阅读:
    Intent
    关注博客
    Bitmap
    图片压缩
    读取相册、拍照
    Godot开发环境与学习资源
    源码开放的引擎研究
    海龟交易法操作商品期货
    重新开始
    使用node_redis进行redis数据库crud操作
  • 原文地址:https://www.cnblogs.com/zle1992/p/7753161.html
Copyright © 2011-2022 走看看