题意:判断先序搜索的数列可否形成二叉树。
思路:用堆栈模拟先序搜索。
class Solution {
public:
bool isValidSerialization(string preorder) {
stack<char> s;
for(int i = 0; i < preorder.length(); ++ i) {
if(preorder[i] == ',') continue;
if(i > 0 && preorder[i - 1] != ',') continue;
if(preorder[i] == '#') {
while(!s.empty() && s.top() == '#') {
s.pop();
if(s.empty()) return false;
s.pop();
//if(s.empty()) return false;
}
s.push('#');
continue;
}
s.push(preorder[i]);
//cout << s.top() << endl;
}
/*
while(!s.empty()) {
cout << s.top() << endl;
s.pop();
}
*/
//return false;
if(s.top() == '#' && s.size() == 1) return true;
else return false;
}
};