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] == '#')

results matching ""

    No results matching ""