LeetCode331:验证二叉树的前序序列化(递归)

 

  解题思路:把所有元素存成数组,设置一个全局下标next,表示当前节点如果要继续遍历应当从数组的哪个位置开始,然后从下标 0 开始DFS。如果DFS返回真并且next下标等于数组的长度,说明元素已经全部访问了,并且可以构成一棵二叉树;否则不可以构成。

 

class Solution:
    def dfs(self,s,i):
        if i >= len(s):
            return False

        self.nxt += 1
        if s[i]=='#':
            return True
        if self.dfs(s,self.nxt):
            if self.dfs(s,self.nxt):
                return True
        return False
    def isValidSerialization(self, preorder):
        s = preorder.split(',')
        self.nxt = 0
        flag =self.dfs(s,0)
        return flag and self.nxt==len(s)
s = Solution().isValidSerialization( "9,3,4,#,#,1,#,#,2,#,6,#")
print(s)

 

posted @ 2021-03-12 13:40  ISGuXing  阅读(62)  评论(0编辑  收藏  举报