Given the root and two nodes in a Binary Tree. Find the lowest common ancestor(LCA) of the two nodes. The lowest common ancestor is the node with largest depth which is the ancestor of both nodes. Example 4 / 3 7 / 5 6 For 3 and 5, the LCA is 4. For 5 and 6, the LCA is 7. For 6 and 7, the LCA is 7.
更复杂的参考:http://www.cnblogs.com/EdwardLiu/p/4265448.html
1 public class Solution { 2 /** 3 * @param root: The root of the binary search tree. 4 * @param A and B: two nodes in a Binary. 5 * @return: Return the least common ancestor(LCA) of the two nodes. 6 */ 7 public TreeNode lowestCommonAncestor(TreeNode root, TreeNode A, TreeNode B) { 8 // write your code here 9 if (root == null) return null; 10 if (root==A || root==B) return root; 11 TreeNode lch = lowestCommonAncestor(root.left, A, B); 12 TreeNode rch = lowestCommonAncestor(root.right, A, B); 13 if (lch!=null && rch!=null) return root; 14 return lch==null? rch : lch; 15 } 16 }