☆☆
class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { /** * 方法1:递归 */ 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); } // 对应三种情况: // 1. p 和 q分别位于node的两侧,那么node就是最近公共祖先 // 2. p 就是 node,那么仍为node // 3. q 就是 node,那么仍为node return root; /** * 方法2:非递归 */ /* while (root != null) { if (p.val < root.val && q.val < root.val) { root = root.left; }else if (p.val > root.val && q.val > root.val) { root = root.right; }else { return root; } } return null; */ } }