Binary Search Tree : Lowest Common Ancestor

  • + 1 comment
    public static Node lca(Node root, int v1, int v2) {
        // Write your code here.        
        if (v1 > root.data && v2 > root.data) {
            // Move to the right subtree
            return lca(root.right, v1, v2);
        }
    
        if (v1 < root.data && v2 < root.data) {
            // Move to the left subtree
            return lca(root.left, v1, v2);    
        }
    
        // Found the LCA
        return root;
    }
    
    • + 0 comments

      Ingenious and simple! Because it's a binary search tree, the left side is always be lower than the right side!