LintCode 최근 공개 조상

1354 단어

제목


두 갈래 트리를 지정하여 두 노드의 가장 가까운 공통 부모 노드(LCA)를 찾습니다.
최근 공공 조상은 두 노드의 공공 조상 노드이며 최대 깊이를 가지고 있다.
주의사항
가령 제시된 두 노드가 모두 나무에 존재한다고 가정하면
예시 아래 두 갈래 나무
4/ 3 7/ 5 6 LCA(3, 5) = 4
LCA(5, 6) = 7
LCA(6, 7) = 7

코드

/**
 * Definition of TreeNode:
 * public class TreeNode {
 *     public int val;
 *     public TreeNode left, right;
 *     public TreeNode(int val) {
 *         this.val = val;
 *         this.left = this.right = null;
 *     }
 * }
 */
public class Solution {
    /**
     * @param root: The root of the binary search tree.
     * @param A and B: two nodes in a Binary.
     * @return: Return the least common ancestor(LCA) of the two nodes.
     */
    public TreeNode lowestCommonAncestor(TreeNode root, TreeNode node1, TreeNode node2) {
        // write your code here
        if (root == null || root == node1 || root == node2) {
            return root;
        }
        
        TreeNode left = lowestCommonAncestor(root.left, node1, node2);
        TreeNode right =  lowestCommonAncestor(root.right, node1, node2);
        
        if(left != null && right != null) {
            return root;
        }
        else if(left!= null)
            return left;
        else if(right != null)
            return right;
        
        return null;
    }
}

좋은 웹페이지 즐겨찾기