LeetCode 331
Verify Preorder Serialization of a Binary Tree
Problem Description:
简而言之,对输入的字符串进行判断,看是否符合二叉树的前序遍历。
具体的题目信息:
https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/description/Solution:
用栈实现:刚开始写一直内存泄漏,主要问题是两次top()之间没有判断是否为空。然后反复改的过程发现有点混乱,后来参考网上dalao写的,想法一样,都是两个‘#’和一个数值替换成一个‘#’,但是人家的思路清晰多了。
参考网站:
https://www.jianshu.com/p/1e1985b9c318
class Solution {
public:
bool isValidSerialization(string preorder) {
if (preorder.length() == 0)
return false;
stack<char> temp;
for (int i = 0; i < preorder.length(); i++) {
if (preorder[i] == ',')
continue;
while (!temp.empty() && temp.top() == '#' &&preorder[i] == '#') {
temp.pop();
if (temp.empty())
return false;
temp.pop();
}
while(preorder[i]-'0'<= 9 && preorder[i]-'0'>= 0 && i+1<preorder.length() &&preorder[i+1]-'0'<= 9 && preorder[i+1]-'0' >= 0) //这个判断条件是在测试的时候报错发现的
i++;
temp.push(preorder[i]);
}
if (temp.size() == 1 && temp.top() == '#')
return true;
return false;
}
};