class Solution {
public:
bool isValidSerialization(string preorder) {
stack<char> s;
for(int i=0;i<preorder.size();i++){
if(preorder[i] == ',' ||(i>0&&preorder[i-1]!=','&&preorder[i]!=','))
continue;
while(!s.empty() && s.top() == '#' && preorder[i] == '#' ){
s.pop();
if(s.empty())
return 0;
s.pop();
}
s.push(preorder[i]);
}
if(s.size() == 1 && s.top() == '#')
return true;
else
return false;
}
};
提示采用栈,因此,采用这样的思路,一旦遇到两个"#",说明遇到一个叶子节点,它是有效的,可用一个"#"代替3个字符串组成的这个节点。例如,有”1,#,#“,可用”#“将其替代。
331. Verify Preorder Serialization of a Binary Tree
最新推荐文章于 2018-07-31 17:53:00 发布