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;
        }

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM