Cohesity Interview Experience

Cohesity Interview Experience – Binary Tree DP (Learning Moment)

Recently, I interviewed with Cohesity and wanted to share one learning experience from the round.

The interview started with a ~10 minute discussion about my current work. We talked about my day-to-day responsibilities, the systems I work on, and the kind of problems I usually solve. The discussion was smooth and conversational.

After that, the interviewer moved to a coding problem.

❓ Problem Asked

Given a binary tree, find the maximum subset sum such that no two selected nodes are adjacent (i.e., you cannot pick both a parent and its child).

This is essentially the “Maximum Sum of Non-Adjacent Nodes in a Binary Tree” problem (similar to House Robber III on LeetCode).

😅 What Happened

Although I understood the problem constraints, I struggled to formulate the correct dynamic programming approach on a tree during the interview.
I tried thinking in terms of traversal and greedy choices, but I couldn’t arrive at the clean solution within the time.

In hindsight, the key was realizing that this is a tree DP problem, where for each node you need to track two states:

when the node is included

when the node is excluded

✅ Correct Approach (What I Learned)

For each node:

Include node → cannot include its children

Exclude node → children can be included or excluded independently

Return a pair {take, skip} for each node:

take = node->val + left.skip + right.skip
skip = max(left.take, left.skip) + max(right.take, right.skip)

Final answer:

max(root.take, root.skip)

This solution runs in O(n) time and is very elegant once you see it.

📌 Takeaway

This interview was a great reminder that:

Tree problems often require DP with multiple states

If a constraint says “cannot pick adjacent nodes”, think in terms of include / exclude

Practicing classic patterns (Tree DP, DFS with return states) really matters

Although I couldn’t solve it during the interview, it was a valuable learning experience and highlighted areas I’ve since focused on improving.

Sharing this here so it helps others who might face a similar question 🙂

Comments (1)