码迷,mamicode.com
首页 > 其他好文 > 详细

3.2 Lowest Common Ancestor of a Binary Search Tree (LeetCode 235)

时间:2018-03-03 11:02:54      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:define   com   ini   between   blank   ant   target   elf   cas   

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 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        if(root == null){
            return null;
        }
        if(p == null && q != null){
            return q;
        }
        if(p != null && q == null){
            return p;
        }
        if(root.val < p.val && root.val < q.val){
            return lowestCommonAncestor(root.right, p, q);
        }else if(root.val > p.val && root.val > q.val){
            return lowestCommonAncestor(root.left, p, q);
        }else{
            return root;
        }
    }
}

这道题首先要明确题目背景---二叉搜索树。也正是因为是二叉搜索树,所以我们可以利用二叉搜索树从小到大排好序的特性来做。

对于一个root和另外两个Node来说,它们的值会有以下几种情况:

1. root.val < p.val && root.val < q.val 此时,两个node的值都比root大,说明这两个值在root右边的subtree里,且他们的最小公共顶点不可能是当前root

2. root.val > p.val && root.val > q.val 此时,两个node的值都比root小,说明这两个值在root左边的subtree里,且他们的最小公共顶点不可能是当前root

3. else,此时 root的值在p,q之间(或等于p,q中的某一个),此时,当前root即为公共顶点

再加上一些corner case,完成。

3.2 Lowest Common Ancestor of a Binary Search Tree (LeetCode 235)

标签:define   com   ini   between   blank   ant   target   elf   cas   

原文地址:https://www.cnblogs.com/juanqiuxiaoxiao/p/8495807.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!