zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    SPOJ 10628 求树上的某条路径上第k小的点
    zoj 2112 动态区间求第k大
    SPOJ QTREE 树链剖分
    FZU 2082 过路费
    bzoj 1036 Tree Count
    POJ 3237
    C
    G
    E
    B. Split a Number(字符串加法)
  • 原文地址:https://www.cnblogs.com/ISGuXing/p/14523415.html
Copyright © 2011-2022 走看看