【LeetCode刷题(数据结构与算法)】:验证二叉树的前序序列化

news2024/11/26 15:38:11

在这里插入图片描述
序列化二叉树的一种方法是使用 前序遍历 。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #
在这里插入图片描述
例如,上面的二叉树可以被序列化为字符串 “9,3,4,#,#,1,#,#,2,#,6,#,#”,其中 # 代表一个空节点。
给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序序列化。编写一个在不重构树的条件下的可行算法。
保证 每个以逗号分隔的字符或为一个整数或为一个表示 null 指针的 ‘#’ 。
你可以认为输入格式总是有效的
例如它永远不会包含两个连续的逗号,比如 “1,3” 。
注意:不允许重建树
示例 1:
输入: preorder = “9,3,4,#,#,1,#,#,2,#,6,#,#”
输出: true
示例 2:
输入: preorder = “1,#”
输出: false
示例 3:
输入: preorder = “9,#,#,1”
输出: false
**解题思路
本道题我们可以采用栈的知识 定一个top或者是slots保存栈顶的值
然后判断二叉树的左子树或者右子树是否有值 有值的话不光要消耗一个空间 而且要额外开辟两个空间用于存放下一个值或者是保存NULL 右子树也是如此
直到我的栈的值为0了就代表我这个二叉树完了或者是前序遍历有序化了
**
在这里插入图片描述
具体代码如下

bool isValidSerialization(char * preorder){
    int n=strlen(preorder);
    int i=0;
    int slots=1;
    while(i<n)
    {
        if(!slots)
        {
            return false;
        }
        if(preorder[i]==','){
            ++i;
        }
        else if(preorder[i]=='#'){
            --slots;
            ++i;
        }
        else{
            while(i<n&&preorder[i]!=',')
            {
                ++i;
            }
            ++slots;
        }
    }
    return !slots;
    //isValidSerialization()
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1101050.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Eclipse使用教程

一、前期准备 JDK环境变量得配置好&#xff08;java需要先安装好&#xff09; 【下载Eclipse解压包&#xff0c;可选择去Eclipse官网下载】 Eclipse的安装方式&#xff1a; 下载后解压直接点击进入选择工作区间就可运行 二、Eclipse基本概述&#xff1a; 工作区&#xff08;w…

2023年全国职业院校技能大赛软件测试赛题第10套

2023年全国职业院校技能大赛 软件测试赛题第10套 目录 任务一 环境搭建及系统部署 任务二 单元测试 任务三 测试文档 任务四 功能测试 任务五 自动化测试 任务六 性能测试 任务七 接口测试 有问题可私信我 赛项名称&#xff1a; 软件测试 英文名称&…

LockSupport-park和unpark编码实战

package com.nanjing.gulimall.zhouyimo.test;import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.LockSupport;/*** author zhou* version 1.0* date 2023/10/16 9:11 下午*/ public class LockSupportDemo {public static void main(String[] args) {…

ZC-CLS381RGB颜色识别+8x8点阵指示——WS2812点阵驱动(中)

文章目录 前言一、WS2812简介二、WS2812配置说明三、波形图绘制1.配置模块2.控制模块 总结 前言 RGB888点阵是一个由64个WS2812 RGB LED灯珠组成的点阵显示屏&#xff0c;可以用于艺术装饰、玩具和游戏、时钟计时器和状态指示器等各种场景。   本文将向各位读者展示&#xff…

漏洞复现--安恒明御安全网关文件上传

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

思维训练1

题目描述2 Problem - A - Codeforces ​ 题目分析 思路一&#xff1a; 由于是连续的数&#xff0c;我们可以使用f1, f2, f3来记录连续数的开头数字&#xff0c;只可能有三种情况 ①开头数为第一个数-1 ②开头数为第一个数 ③开头数为第一个数1 分别观察这三个情况&…

osWorkflow-1——osWorkflow官网例子部署启动简单使用(版本:OSWorkflow-2.8.0)

osWorkflow-1——osWorkflow官网例子部署启动简单使用&#xff08;版本&#xff1a;OSWorkflow-2.8.0&#xff09; 1. 前言——准备工作1.1 下载相关资料1.2 安装翻译插件 2. 开始搞项目2.1 解压 .zip文件2.2 简单小测&#xff08;war包放入tomcat&#xff09;2.3 导入项目到 I…

2023年信息科学与工程学院学生科协第一次软件培训

2023年信息科学与工程学院学生科协第一次软件培训 文章目录 2023年信息科学与工程学院学生科协第一次软件培训运行第一个代码&#xff08;“Hello World&#xff01;”&#xff09;初识C语言代码的具体结构头文件(主)函数 输入与输出scanf函数printf函数转义字符 变量的定义进一…

如何选择全面型企业备份软件以提高数据可用性?

通常&#xff0c;备份数据是指服务器正在运行的工作负载所需的所有数据。这可以包括文档、媒体文件、配置文件、机器映像、操作系统和注册表文件。本质上&#xff0c;您想要保留的任何数据都可以存储为备份数据。 在日益数字化的商业环境中&#xff0c;数据备份对于组织的生存…

C语言复杂表达式与指针高级

一、指针数组与数组指针 1.指针数组VS数组指针 &#xff08;1&#xff09;指针数组&#xff1a;实质是一个数组&#xff0c;因为这个数组中传参的内容全部是指针变量。 &#xff08;2&#xff09;数组指针&#xff1a;实质是一个指针&#xff0c;这个指针指向一个数组 2.分析指…

C语言,打印指定大小的X

要打印一个X&#xff0c;无非是在一个二维数组一个矩形中操作&#xff0c;将不是X的部分赋值为空格字符&#xff0c;将是X部分打印为*字符。 矩形的边长就是输入的n&#xff0c;由于矩形的边长是不固定的&#xff0c;所以要找到应该被赋值为*的坐标之间有什么数学关系。 以矩…

宏电股份AI BOX新产品首次亮相2023中国移动全球合作伙伴大会,以创新性AI、5G技术推动数实共生

10月11-13日&#xff0c;2023中国移动全球合作伙伴大会在广州开幕&#xff0c;本次大会以“算启新程&#xff0c;智享未来”为主题&#xff0c;作为中国移动多年来的重要合作伙伴&#xff0c;宏电股份AI BOX新产品在大会上首次精彩亮相&#xff0c;并重点展示了5G Redcap工业智…

格雷码加相移三维重建

之前所做的三维重建系统基本上都是基于多频率外差 的方法 &#xff08;交流方式可以点这个链接&#xff09;&#xff0c;最近整理了一下格雷码加相移的算法&#xff0c;与多频外差相比格雷码在对反光物体的重建效果稍微好一点&#xff0c;也可以投诉更少的图像 。采用6介互补格…

Python使用Selenium库如何绕过Cloudflare验证,网页请确认你是不是机器人

大家好&#xff0c;我是淘小白~ 前段时间使用selenium库写chatGPT的脚本&#xff0c;遇到过一个问题&#xff0c;那就是cloudflare的机器验证&#xff0c;让你点击确认不是机器人&#xff0c;这个问题最后找人解决掉了&#xff0c;我也是百度了很久没找到答案&#xff0c;B站找…

053:mapboxGL中sources的6种类型及各类型的示例代码

第053个 点击查看专栏目录 本篇文章是mapbox的source的归纳总结。 mapbox中 sources 是什么 sources:数据源集合(必填,用于包含一系列数据源 source,这些数据源提供了在地图上显示的数据) sources 是对象 {} 的形式,其属性名就是 数据源的名称(或者说 数据源的 id),…

网络基础初谈

0.一些无关紧要的心里话 ​ 一转眼学习计算机知识已经一年多了&#xff0c;中间起起伏伏&#xff0c;断断续续&#xff0c;但还算好也是坚持到了今天&#xff0c;之所以把这些基础知识写成一个系列&#xff0c;一方面方便知识巩固&#xff0c;另一方面至少还有三三两两的几个朋…

Linux命令之chpasswd命令

一、chpasswd命令简介 chpasswd命令用于同时更改多个用户的密码。它可以从标准输入或指定的文件中读取用户名和密码的组合&#xff0c;并将其应用于系统中的用户。chpasswd命令通常用于批量更改用户密码&#xff0c;特别是在自动化脚本或批处理任务中&#xff0c;该命令需要roo…

ERP系统供应商协同:优化企业供应链管理

一、ERP系统供应商协同的概念和功能 供应商协同是指在供应链中&#xff0c;企业与供应商之间通过ERP系统进行紧密合作和信息共享&#xff0c;实现供应链各个环节的协调和优化。ERP系统供应商协同功能涉及以下方面&#xff1a; 1. 供应商管理&#xff1a;ERP系统提供完善的供应…

华为云云耀云服务器L实例评测|windows系统3389防爆破之安全加固教程

为什么要选择华为云云耀云服务器L实例&#xff1a; 华为云在全国范围内建立了多个数据中心&#xff0c;这些数据中心之间相互冗余&#xff0c;以确保高可靠性和可用性&#xff0c;用户可以选择最适合的区域来部署应用程序&#xff0c;以实现更好的性能和延迟。 相对于传统的物…

选择什么电容笔比较好?平板手写笔推荐

由于苹果Pencil的热销&#xff0c;让华国内市场上&#xff0c;也出现了不少的平替式电容笔&#xff0c;这些产品&#xff0c;有好有坏&#xff0c;价格也很公道。不过&#xff0c;也有很多产品的价格都很平价。我是一个拥有多年经验的数码发烧友&#xff0c;在前几年就开始用上…