0536. Construct Binary Tree from String
Last updated
Last updated
**Input:** s = "4(2(3)(1))(6(5))"
**Output:** [4,2,6,3,1,5]**Input:** s = "4(2(3)(1))(6(5)(7))"
**Output:** [4,2,6,3,1,5,7]**Input:** s = "-4(2(3)(1))(6(5)(7))"
**Output:** [-4,2,6,3,1,5,7]/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int i = 0;
public TreeNode str2tree(String s) {
TreeNode root = null;
int p = i;
while (i < s.length() && s.charAt(i) != '(' && s.charAt(i) != ')') i++; // get root value
String tmp = s.substring(p, i);
if (tmp.length() != 0) { // some empty value like "()"
int val = Integer.parseInt(tmp);
root = new TreeNode(val);
}
if (i < s.length() && s.charAt(i++) == '(') { // '(' means the start of a child node, careful about boundary
root.left = str2tree(s);
if (i < s.length() && s.charAt(i++) == '(') {
root.right = str2tree(s);
i++; // when right child finish (not leaf), it's always like "))"
}
}
return root;
}
}
/*
regard string as a queue, similar to #297 queue deserialize
*/