Verify Preorder Serialization of a Binary Tree
所有的树叶子空节点的个数比树结点的个数要大1,所以这里只需要模仿树的前序遍历检查,最后看序列的末尾是不是井号且栈为空就行了,如果在中途栈为空的时候遇到了井号则绝对不合法
class Solution(object):
def isValidSerialization(self, preorder):
"""
:type preorder: str
:rtype: bool
"""
if not preorder:
return True
stack = []
preorder = preorder.split(',')
n = len(preorder)
for i in xrange(n - 1):
if preorder[i] == '#':
if not stack:
return False
stack.pop()
else:
stack.append(preorder[i])
return (len(stack) == 0) and (preorder[-1] == '#')