思路:
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;
}
}