提交了4次才AC,我的天,各种修修补补,好不容易AC。遇到的问题有以下3个:
“#”—true“”— false两棵树—flase class Solution { public: bool isValidSerialization(string preorder) { //nums=='0','#' vector<char> nums; int i=0; while(i<preorder.size()) { string temp; while(i<preorder.size()&&preorder[i]!=',') temp+=preorder[i++]; i++; if(temp[0]=='#') nums.push_back('#'); else nums.push_back('0'); } if(nums.size()==0) return false; else if(nums.size()==1) { if(nums[0]=='#') return true; else return false; } else { stack<int> state;//0,1,2 int i=0; for(i=0;i<nums.size();i++) { if(nums[i]=='0') state.push(0); else { if(state.empty()) return false; int top=state.top(); state.pop(); state.push(top+1); } while(state.top()==2) { state.pop(); if(state.empty()) break; int top=state.top(); state.pop(); state.push(top+1); } if(state.empty()) break; } if(state.empty()&&i==nums.size()-1) return true; else return false; } } };