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.



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 }