| 12345678910111213141516171819202122232425262728293031323334353637 | func isValidSerialization(preorder string) bool {	tree := strings.Split(preorder, ",")	n := len(tree)	if n == 0 || (n == 1 && tree[0] != "#") || (tree[0] == "#" && 1 < n) {		return false	}	st := []int{-1} // 0 for left, and 1 for right	l, i, next := 1, 1, 0	for ; i < n && l != 0; i++ {		if next == 0 {			st = append(st, 0)			l++			if tree[i] == "#" {				next = 1			}		} else {			if tree[i] == "#" {				l--				st = st[:l]				for 2 < l && st[l-1] == 1 {					l--					if st[l-1] != 0 {						return false					}					l--					st = st[:l]				}			} else {				st = append(st, 1)				l++				next = 0			}		}	}	return len(st) == 1 && i == n}
 |