/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
TreeNode *recoverFromPreorder(string S) {
deque<TreeNode *> d;
int cur = 0;
while (cur < S.size()) {
int level = 0;
while (S[cur] == '-')
cur++, level++;
int val = 0;
while (cur < S.size() && isdigit(S[cur]))
val = val * 10 + (S[cur++] - '0');
auto *node = new TreeNode(val);
if (level == d.size()) {
if (!d.empty())
d.back()->left = node;
} else {
while (level != d.size())
d.pop_back();
d.back()->right = node;
}
d.emplace_back(node);
}
while (d.size() > 1)
d.pop_back();
return d.back();
}
1028. 从先序遍历还原二叉树
最新推荐文章于 2022-03-05 09:01:45 发布