We perform a preorder depth-first traversal on a binary tree starting from its root.
For each node, we first write D dashes, where D is the depth of the node in the tree, followed by the node’s integer value.
The root node has depth 0.
If a node is at depth D, its children (if any) will appear at depth D + 1.
If a node has only one child, it will always be the left child.
You are given the string representation of this traversal. Your task is to reconstruct the original binary tree and return its root.
Constraints:
The number of nodes in the original binary tree lies within the range
node.data
The core intuition behind solving this problem is to run a DFS over the preorder traversal string. At each call, we expect a node at a specific depth. Therefore, we first count the leading dashes. If they match the expected depth, we consume them, parse the next integer, and create a node with that value. Then, we recursively attempt the left and right children at
We perform a preorder depth-first traversal on a binary tree starting from its root.
For each node, we first write D dashes, where D is the depth of the node in the tree, followed by the node’s integer value.
The root node has depth 0.
If a node is at depth D, its children (if any) will appear at depth D + 1.
If a node has only one child, it will always be the left child.
You are given the string representation of this traversal. Your task is to reconstruct the original binary tree and return its root.
Constraints:
The number of nodes in the original binary tree lies within the range
node.data
The core intuition behind solving this problem is to run a DFS over the preorder traversal string. At each call, we expect a node at a specific depth. Therefore, we first count the leading dashes. If they match the expected depth, we consume them, parse the next integer, and create a node with that value. Then, we recursively attempt the left and right children at