536. Construct Binary Tree from String
Problem description:
You need to construct a binary tree from a string consisting of parenthesis and integers.
The whole input represents a binary tree. It contains an integer followed by zero, one or two pairs of parenthesis. The integer represents the root’s value and a pair of parenthesis contains a child binary tree with the same structure.
You always start to construct the left child node of the parent first if it exists.
Example 1:
1 | Input: s = "4(2(3)(1))(6(5))" |
Example 2:
1 | Input: s = "4(2(3)(1))(6(5)(7))" |
Example 3:
1 | Input: s = "-4(2(3)(1))(6(5)(7))" |
Constraints:
0 <= s.length <= 3 * 104
s
consists of digits,'('
,')'
, and'-'
only.
Solution:
DFS
have a dfs function to walk through the stringdfs(s, i)
, take string and start index
build node then recursive calls to build node.left and node.right
return node and index
returning index because we do preorder traversal need next index to build node.right
1 | # Definition for a binary tree node. |
time complexity: $O()$
space complexity: $O()$
reference:
related problem: