diff --git a/java/lowest-common-ancestor-of-a-binary-tree.java b/java/lowest-common-ancestor-of-a-binary-tree.java new file mode 100644 index 0000000..85ede21 --- /dev/null +++ b/java/lowest-common-ancestor-of-a-binary-tree.java @@ -0,0 +1,24 @@ +class Solution { + public TreeNode lowestCommonAncestor(TreeNode node, TreeNode p, TreeNode q) { + if (node == null) { + return null; + } + + if (node.val == p.val || node.val == q.val) { + return node; + } + + var left = lowestCommonAncestor(node.left, p, q); + var right = lowestCommonAncestor(node.right, p, q); + + if (left == null) { + return right; + } + + if (right == null) { + return left; + } + + return node; + } +}