怎样验证python二叉树的前序序列化
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章给大家分享的是有关怎样验证python二叉树的前序序列化,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、题目内容序列化二叉树的
千家信息网最后更新 2026年11月02日怎样验证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安全错误
数据库的锁怎样保障安全
上海喔噻互联网科技有限公司
科技互联网产品
互联网属科技
互联网通讯科技
互联网核心科技是什么
北京互联网科技公司
科技创新互联网企业
互联网科技logo
掌上梦互联网科技
互联网科技大会
国外互联网科技网站
海南购全球互联网科技
蓝色互联网科技
济南华为互联网科技产业总部基地
互联网科技项目计划书材料类
互联网对科技的发展
民营互联网公司国防科技
从那以后互联网科技有限公司
图游互联网科技
宁波允成互联网科技有限公司
互联网科技公司起名
互联网科技的
互联网科技视频素材
互联网科技公司做什么
新华互联网科技校企合作
南平创想时代互联网科技有限公司
互联网科技公司实习生
杭州披云加互联网科技有限公司
萌小萌互联网科技河南有限公司
艺电能源互联网科技有限公司招聘