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 6For 3 and 5, the LCA is 4.For 5 and 6, the LCA is 7.For 6 and 7, the LCA is 7.
更复杂的参考:
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 }