【LeetCode】(簡單)235. 二叉搜索樹的最近公共祖先

思路:

1. 還是那句話,關於二叉樹的問題一定要想到用遞歸,而遞歸是不關心方法的具體實現的。

2. 再想想二叉搜索樹的特點,root的值是比左邊大,比右邊小的。所以如果p和q一個在左一個在右,那最近的公共祖先就是root。

3. 如果都在左邊,那就把left結點傳進方法中作爲root結點,繼續尋找公共祖先。反之。

代碼:

class Solution {
    public TreeNode lowestCommonAncestor
       (TreeNode root, TreeNode p, TreeNode q) {
        if(p.val <root.val && q.val <root.val) 
            return lowestCommonAncestor(root.left,p,q);
        if(p.val >root.val && q.val >root.val) 
            return lowestCommonAncestor(root.right,p,q);
        return root;
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章