coding
Meta
Facebook

Meta Coding Question: Indent Root-to-Leaf Paths by Column

Topics:
Binary Tree
Depth-First Search
Tree Traversal
Roles:
Software Engineer
Backend Engineer
Full Stack Engineer
Experience:
Entry Level
Mid Level
Senior

Question Description

You are asked to produce a printed representation for every root-to-leaf path in a binary tree where each node is indented according to its column on that path. Columns are assigned with root = 0, left child = c - 1, right child = c + 1. For each individual path, you compute the minimum column value m encountered on that path, shift all columns by -m so the minimum becomes 0, and then indent each node with one leading space per shifted column. Output each path as a multi-line string with top-down node order (root first, leaf last).

How the interview typically flows:

  • Clarify input/output and node definition, confirm that each path is treated independently (per-path column shift).
  • Propose a traversal: DFS that tracks the current column and accumulates nodes and their columns along the current path.
  • After reaching a leaf, compute the per-path minimum column, shift columns, build the multi-line string, and append it to the result list.
  • Discuss complexity, edge cases (single-node tree, skewed trees, null root) and possible iterative alternatives.

Skills you should demonstrate:

  • Correct DFS/backtracking to collect root-to-leaf paths and per-node column values.
  • Ability to compute and apply a per-path shift, then format multi-line strings with precise indentation.
  • Time and space complexity reasoning (O(n) time visiting nodes once; O(h) stack + O(n) output space, where h is tree height).

Hints: track a list of (node_val, column) along the path, compute min once you reach a leaf, then map to strings using ' ' * shifted_column + str(val). Be ready to discuss iterative DFS and memory trade-offs.

Common Follow-up Questions

  • How would you change the solution to produce a single global column alignment (same columns across all paths) instead of per-path shifting?
  • Can you implement an iterative version (explicit stack) that avoids recursion while still computing per-path columns and building the indented strings?
  • What are the time and space complexity trade-offs if you build string lines incrementally during traversal versus storing node/column pairs then composing strings at each leaf?
  • How would you modify the algorithm to support n-ary trees (nodes with many children) while maintaining per-path column rules?

Related Questions

1Generate all root-to-leaf paths in a binary tree (list of node value lists)
2Vertical order traversal and column indexing for a binary tree
3Pretty-print a binary tree with indentation or ASCII art
4Find root-to-leaf path sums and path-based DP on trees

Explore More Questions

Practice This Question with AI

Get real-time hints, detailed requirements, and insightful analysis of the question.

Indent Root-to-Leaf Paths by Column - Meta Coding | Voker