LintCode880—字符串创建二叉树(C++)
<第一次记录代码,如有错误欢迎指正>
你需要根据一个由括号和整数组成的字符串中构造一颗二叉树。
输入的整个字符串表示一个二叉树。它包含一个整数,以及其后跟随的0~2对括号。该整数表示根的值,而一对括号里的字符串代表一个具有相同结构的子二叉树。
如果一个节点含有子节点,你应该先构造它的左子节点。
/*
你需要根据一个由括号和整数组成的字符串中构造一颗二叉树。
输入的整个字符串表示一个二叉树。它包含一个整数,以及其后跟随的0~2对括号。
该整数表示根的值,而一对括号里的字符串代表一个具有相同结构的子二叉树。
如果一个节点含有子节点,你应该先构造它的左子节点。
样例
样例1:
输入: -4(2(3)(1))(6(5))
输出: -4,2,6,3,1,5
说明:
输出应该如下所示:
-4
/
2 6
/ \ /
3 1 5
样例2:
输入: 1(-1)
输出: 1,-1
说明:
输出应该如下所示:
1
/
-1
注意事项
在输入字符串中只有’(’,’)’,’-‘和’0’ ~ ‘9’。
空树表示为" “而不是”( )"。
*/
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param s: a string
* @return: a root of this tree
*/
/*将字符串分解为一个整数,两个子字符串*/
void split(string str, int &num, string &sstr1, string &sstr2)
{
if (str == "")
return;
int k = 0;//记录第一个“(