Construct String from Binary Tree - Problem

Given the root node of a binary tree, your task is to create a string representation of the tree following a specific set of formatting rules.

The representation should be based on a preorder traversal of the binary tree and must adhere to the following guidelines:

Node Representation: Each node in the tree should be represented by its integer value.

Parentheses for Children: If a node has at least one child (either left or right), its children should be represented inside parentheses. Specifically:

  • If a node has a left child, the value of the left child should be enclosed in parentheses immediately following the node's value.
  • If a node has a right child, the value of the right child should also be enclosed in parentheses following the left child.

Omitting Empty Parentheses: Any empty parentheses pairs () should be omitted from the final string representation, with one specific exception: when a node has a right child but no left child, you must include an empty pair of parentheses to indicate the absence of the left child.

This ensures that the one-to-one mapping between the string representation and the original binary tree structure is maintained.

Input & Output

Example 1 — Tree with Mixed Children
$ Input: root = [1,2,3,null,4]
Output: "1(2()(4))(3)"
💡 Note: Node 1 has both children. Node 2 has only right child (4), so we include empty parentheses for the missing left child to maintain structure. Node 3 has no children.
Example 2 — Tree with Only Left Children
$ Input: root = [1,2,3,4]
Output: "1(2(4))(3)"
💡 Note: Node 1 has both children. Node 2 has only left child (4), so no empty parentheses needed. Node 3 has no children.
Example 3 — Single Node
$ Input: root = [1]
Output: "1"
💡 Note: Single node with no children requires no parentheses.

Constraints

  • The number of nodes in the tree is in the range [1, 104]
  • -1000 ≤ Node.val ≤ 1000

Visualization

Tap to expand
Construct String from Binary TreeInput Tree1234nullConvertString Output1(2()(4))(3)Preorder: 1 → 2 → 4 → 3Node 2: Right child but no left → Add ()Node 3: No children → No parentheses🎯 Key: Empty () preserve tree structure
Understanding the Visualization
1
Input Tree
Binary tree with nodes [1,2,3,null,4]
2
Apply Rules
Add parentheses for children, preserve structure with empty ()
3
Output String
"1(2()(4))(3)"
Key Takeaway
🎯 Key Insight: Only include empty parentheses when a node has a right child but no left child to maintain unambiguous tree structure
Asked in
Amazon 35 Facebook 28 Google 22
67.0K Views
Medium Frequency
~15 min Avg. Time
1.5K Likes
Ln 1, Col 1
Smart Actions
💡 Explanation
AI Ready
💡 Suggestion Tab to accept Esc to dismiss
// Output will appear here after running code
Code Editor Closed
Click the red button to reopen