题目描述:
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:
Input: "4(2(3)(1))(6(5))"
Output: return the tree root node representing the following tree:
4
/ \
2 6
/ \ /
3 1 5
Note:
- There will only be
'(',')','-'and'0'~'9'in the input string. - An empty tree is represented by
""instead of"()".
class Solution {
public:
TreeNode* str2tree(string s) {
if(s=="") return NULL;
int i=0;
while(i<s.size()&&((s[i]>='0'&&s[i]<='9')||s[i]=='-')) i++;
TreeNode* node=new TreeNode(stoi(s.substr(0,i)));
s=s.substr(i);
if(s=="") return node;
int left_count=0;
int j=0;
while(j<s.size())
{
if(s[j]=='(') left_count++;
else if(s[j]==')') left_count--;
if(left_count==0) break;
j++;
}
node->left=str2tree(s.substr(1,j-1));
s=s.substr(j+1);
if(s=="") return node;
node->right=str2tree(s.substr(1,s.size()-2));
return node;
}
};
本文介绍了一种从包含括号和整数的字符串中构建二叉树的方法。通过解析输入字符串,创建二叉树节点,并根据括号的配对确定左右子树,实现了字符串到二叉树的转换。
343

被折叠的 条评论
为什么被折叠?



