← Uber Interview Insights

Uber·Software Engineer·Technical Phone Screen·Intermediate

Intermediate
Jul 2026

Summary

Uber SWE coding round, one tree problem the whole session. Pretty standard stuff if you've done any LeetCode prep, but the pressure of doing it live is a different thing entirely.

Questions Asked (1)

Q1

Given the root of a binary tree and two nodes p and q, find their lowest common ancestor.

Algorithms & Data Structures
Author's notes

I knew this problem but still fumbled the explanation for like two minutes.

Create a free account to read the full note

AI HintsAI Generated

Suggested Approach

Clarify assumptions (e.g., nodes exist, tree not necessarily BST) and then present a recursive DFS solution that returns the LCA by checking if p and q are found in left and right subtrees. Explain the base cases and how the recursion combines results to identify the lowest common ancestor.

Pro tip: Mention that if the tree is a BST, you can solve it iteratively in O(h) time by comparing node values, but for a general binary tree, the recursive approach is optimal. Also, discuss handling edge cases like when one node is an ancestor of the other.

1. Clarify the problem

Ask if the tree is a BST or a general binary tree, and confirm that both nodes exist in the tree. This shows attention to detail and avoids incorrect assumptions.

2. Outline the recursive approach

Explain that you'll traverse the tree recursively, returning the current node if it matches p or q, and otherwise recursing into left and right subtrees.

3. Define base cases and combine results

If the current node is null or matches p or q, return it. If both left and right recursive calls return non-null, the current node is the LCA; otherwise return the non-null result.

4. Analyze complexity

State that the time complexity is O(n) in the worst case (visiting each node once) and space complexity is O(h) due to recursion stack, where h is the tree height.

5. Discuss edge cases and alternatives

Mention handling when p or q is the root, when one is an ancestor of the other, and briefly note that for a BST, an iterative O(h) solution exists.

Key Points to Mention

  • Recursive DFS traversal
  • Base cases: null node, node equals p or q
  • Combining results from left and right subtrees
  • Time complexity O(n), space complexity O(h)
  • Handling edge cases: p or q is root, one is ancestor of the other
  • Alternative for BST: iterative comparison of values

AI-generated suggestions, not part of the candidate's original notes. May be inaccurate — verify before relying on them.