LeetCode235-二叉搜索树的最近公共祖先

Posted 朋友圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode235-二叉搜索树的最近公共祖先相关的知识,希望对你有一定的参考价值。

根据236的做法,这个就简单了。

 

递归主要费时间的地方是,分别去左右子树去找,有没有p和q。

 

利用搜索树的性质,减少递归的次数

如果p和q都小于root,去左边找就行。

如果p和q在两侧的,直接就是root,这个可以通过val来判断。

 

    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {

        //返回条件一样
        //如果往下的过程中,先遇到p或者q,它就是最近祖先
        if(root==null||root==p||root==q)
            return root;

        //都在左边,那p和q都在左子树下,返回左子树递归的结果就好
        if (p.val<root.val&&q.val<root.val){
            return lowestCommonAncestor(root.left,p,q);
        }else if(p.val>root.val&&q.val>root.val){
            return lowestCommonAncestor(root.right,p,q);
        }else {
            //val一个大于一个小于,直接就是自己的
            return root;
        }

    }

 

以上是关于LeetCode235-二叉搜索树的最近公共祖先的主要内容,如果未能解决你的问题,请参考以下文章

leetcode235二叉搜索树的最近公共祖先

Leetcode 235.二叉搜索树的公共祖先

LeetCode235 二叉搜索树的最近公共祖先

LeetCode235 二叉搜索树的最近公共祖先

leetcode-235二叉搜索树的最近公共祖先

leetcode 235. 二叉搜索树的最近公共祖先(c++)