problem:https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/
这道题需要记录一个count值,表示当前树还有多少个地方可以插入新的节点(包括插入数字和插入Null)。
如果插入的是数字节点,那么会多一个可用的位置(新的节点占用了一个,但又新增了两个);如果插入的是null,那么它只会占用一个,所以会少一个可用的位置。
每次遇到没有可用位置的时候,意味着当前字符串非法。
扫描到最后时,如果可用位置还有剩余,也意味着当前字符串非法。
class Solution { public: bool isValidSerialization(string p) { //stack<char> sta; int count = 1; int num = 0; bool bDigit = false; p.push_back(','); for(int i = 0;i < p.size();i++) { if(p[i] == '#') { bDigit = false; if(count == 0) return false; count--; } else if(p[i] >= '0' && p[i] <= '9') { bDigit = true; num = 10 * num + (p[i] - '0'); } else if(p[i] == ',' && bDigit) { if(count == 0) return false; count++; num = 0; } } return count == 0; } };