Lintcode: Lowest Common Ancestor

4264 단어 code
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 }

좋은 웹페이지 즐겨찾기