Katkat

Solve tree and DP problems

AmazonSoftware Engineer · Technical Screen

Last updated

This pair of problems evaluates proficiency with tree data structures and traversal concepts (deepest shared ancestor) and with dynamic programming/state optimization on linear arrays (maximizing non-adjacent house values), assessing algorithmic reasoning, complexity awareness, and data-structure manipulation.

This coding round contained two algorithm questions:

  1. Deepest shared ancestor in a binary tree You are given the root of a binary tree and two distinct nodes p and q that both exist in the tree. Return the deepest node that is an ancestor of both p and q. A node may be considered an ancestor of itself.

  2. Maximize money from non-adjacent houses You are given an integer array money where money[i] is the amount of money stored in the ith house on a street. You may not take money from two adjacent houses on the same night. Return the maximum total amount you can collect.