如果一个在根节点,另一个在其子树,返回root没毛病。
如果不是同时大于或小于,因为二叉搜索树性质,会分别在两边,返回root没毛病。
如果同时在一边,则当前节点不会是最近公共祖先,往子树递归,没毛病。
*注意要写3个return
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
/** * 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.val > p.val && root.val > q.val) return lowestCommonAncestor(root.left, p, q); if(root.val < p.val && root.val < q.val) return lowestCommonAncestor(root.right, p, q); return root; } }