怎样验证python二叉树的前序序列化
发表于:2024-10-19 作者:千家信息网编辑
千家信息网最后更新 2024年10月19日,本篇文章给大家分享的是有关怎样验证python二叉树的前序序列化,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、题目内容序列化二叉树的
千家信息网最后更新 2024年10月19日怎样验证python二叉树的前序序列化
本篇文章给大家分享的是有关怎样验证python二叉树的前序序列化,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
一、题目内容
序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。
_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
二、解题思路
用栈存储数字,'#'作为出栈的依据;
事先栈中存入一个'#';
当栈中最后一个是'#'且preorder序列最后也是'#',则说明是正确的二叉树的前序序列化;
否则若preorder中'#'还没有到最后位置就与栈中的'#'匹配,则说明是不正确的。
三、代码
class Solution: def isValidSerialization(self, preorder: str) -> bool: stack = ['#'] i = 0 while i < len(preorder): if preorder[i] == ',': i += 1 continue elif preorder[i] == '#': if stack[-1] == '#': if i == len(preorder) - 1: stack.pop() else: return False else: stack.pop() elif preorder[i] != '#': stack.append(preorder[i]) while i < len(preorder) and preorder[i] != ',': i += 1 i += 1 return len(stack) == 0if __name__ == '__main__': s = Solution() preorder = "9,3,4,#,#,1,#,#,2,#,6,#,#" ans = s.isValidSerialization(preorder) print(ans)
以上就是怎样验证python二叉树的前序序列化,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
序列
节点
输入
验证
示例
逗号
输出
字符
更多
知识
篇文章
可行
实用
有效
两个
代码
代表
位置
内容
字符串
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
优刻得封禁服务器
php是数据库语言吗
软件开发与程序编辑
河口天气预报软件开发
人人有网络安全吗
通用软件开发有限公司
安装psql 连接数据库
查看已有的数据库用的语句
在数据库设计过程不包含
当前网络安全现状和发展趋势
最典型的软件开发架构
软件开发遇到巨大的困难
游管网服务器
有几种网络技术有限公司
游戏服务器编程
方舟生存进化怎么建一个服务器
塞尔达荒野之息怎么看服务器
什么事newsql数据库
怎么把sql数据库分割
数据库 容灾
创建数据库查询窗口报表
医疗机构网络安全自查报告
java 电脑软件开发
风尚购物软件开发
成都办公系统软件开发价钱是多少
数据库跟新失败
网络安全形容词
软件开发编程证书含金量
厦门漫趣网络技术有限公司
神武服务器等级是十二点开放吗