zoukankan      html  css  js  c++  java
  • leetcode刷题笔记331题 验证二叉树的前序序列化

    leetcode刷题笔记331题 验证二叉树的前序序列化

    源地址:331. 验证二叉树的前序序列化

    问题描述:

    序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。

    _9_
    

    /

    3 2
    / /
    4 1 # 6
    / / /

    #

    例如,上面的二叉树可以被序列化为字符串 "9,3,4,#,#,1,#,#,2,#,6,#,#",其中 # 代表一个空节点。

    给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。

    每个以逗号分隔的字符或为一个整数或为一个表示 null 指针的 '#' 。

    你可以认为输入格式总是有效的,例如它永远不会包含两个连续的逗号,比如 "1,,3" 。

    示例 1:

    输入: "9,3,4,#,#,1,#,#,2,#,6,#,#"
    输出: true
    示例 2:

    输入: "1,#"
    输出: false
    示例 3:

    输入: "9,#,#,1"
    输出: false

    object Solution {
        def isValidSerialization(preorder: String): Boolean = {
            var k = 0
            val s = preorder + ","
            if (dfs() == false) return false
    
            def dfs(): Boolean = {
                //遍历过程中 字符串已经消耗完
                if (k == s.length) return false
                //此分支遍历到底,遍历另一分支
                if (s(k) == '#') {
                    k += 2
                    return true
                }
                //访问到非叶子节点
                while (s(k) != ',') k += 1
                //越过逗号
                k += 1
    
                //检测左右子树是否满足
                return dfs() && dfs()
            }
    
            return k == s.length
        }
    }
    
    var k = 0
    var s string
    
    func isValidSerialization(preorder string) bool {
        k = 0
        s = preorder + ","
        if (dfs() == false) {return false}
        return k == len(s)
    }
    
    func dfs() bool {
        if k == len(s) {return false}
        if s[k] == '#' {
            k += 2
            return true
        }
        for (s[k] != ',') {
            k += 1
        }
        k += 1
        return dfs() && dfs()
    }
    
  • 相关阅读:
    安装MySQLdb
    树莓派及其他硬件平台国内外Linux镜像站全汇总
    rpc使用举例
    SAE上安装第三方模块
    【Java】Map
    【Java】判断字符串是否含字母
    【Android Studio】提示代码忽略大小写
    【iOS】Xcode 离线文档
    【iOS】iOS main() 简介
    【eclipse】No enclosing instance of type A is accessible. Must qualify the allocation with an enclosing instance of type A
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/14143729.html
Copyright © 2011-2022 走看看