LCA of Binary Tree
unknown
java
3 months ago
1.8 kB
10
Indexable
// Definition for a binary tree node class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; left = null; right = null; } } public class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { // Base Case: If root is null or matches p or q, return root if (root == null || root == p || root == q) { return root; } // Recur for left and right subtrees TreeNode left = lowestCommonAncestor(root.left, p, q); TreeNode right = lowestCommonAncestor(root.right, p, q); // If one node is found in left subtree and one in right, root is LCA if (left != null && right != null) { return root; } // Otherwise, return non-null node return (left != null) ? left : right; } public static void main(String[] args) { // Constructing the Binary Tree TreeNode root = new TreeNode(3); root.left = new TreeNode(5); root.right = new TreeNode(1); root.left.left = new TreeNode(6); root.left.right = new TreeNode(2); root.right.left = new TreeNode(0); root.right.right = new TreeNode(8); root.left.right.left = new TreeNode(7); root.left.right.right = new TreeNode(4); Solution sol = new Solution(); TreeNode p = root.left; // Node with value 5 TreeNode q = root.right; // Node with value 1 TreeNode lca = sol.lowestCommonAncestor(root, p, q); System.out.println("Lowest Common Ancestor of " + p.val + " and " + q.val + " is: " + lca.val); } }
Editor is loading...
Leave a Comment