Leetcode 331 Solution

This article provides solution to leetcode question 331 (verify-preorder-serialization-of-a-binary-tree)

https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree

Solution

class Solution { public: bool isValidSerialization(string preorder) { preorder += ','; string curr;
int status = 0; for (int i = 0; i < preorder.size(); i++) { if (preorder[i] == '#') status = 1; else if (preorder[i] == ',') { if (status == 1) curr += '#'; else if (status == 2) curr += '0'; } else status = 2; }
while (true) { string next;
for (int i = 0; i < (int)curr.size(); i++) { if (i + 2 < curr.size() && curr[i] != '#' && curr[i + 1] == '#' && curr[i + 2] == '#') { next += '#'; i += 2; } else next += curr[i]; }
if (curr.size() == next.size()) break;
curr = next; }
return curr.size() == 1 && curr[0] == '#'; } };