当前位置:网站首页>【二叉树】二叉搜索树的后序遍历序列
【二叉树】二叉搜索树的后序遍历序列
2022-08-10 19:06:00 【豪冷啊】
0x00 题目
输入一个整数数组
判断该数组是不是某二叉搜索树的后序遍历结果
如果是则返回 true,否则返回 false
假设输入的数组的任意两个数字都互不相同
0x01 思路
后序遍历的结果是:左,右,中
最后一个是根节点右子树的所有节点都 大于 根节点
找到第一个大于 根节点的 索引
即可区分左右子树
0x02 解法
语言:Swift
树节点:TreeNode
public class TreeNode {
public var val: Int
public var left: TreeNode?
public var right: TreeNode?
public init() { self.val = 0; self.left = nil; self.right = nil; }
public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
self.val = val
self.left = left
self.right = right
}
}
解法:
func verifyPostorder(_ postorder: [Int]) -> Bool {
func verify(_ i: Int, _ j: Int) -> Bool {
// 说明此子树节点数量 ≤ 1 ,无需判断,直接 true
if i >= j { return true }
// 寻找 第一个大于根节点 的节点
// 即左子树 都要小于 要节点
var p = i
while postorder[p] < postorder[j] {
p += 1
}
// 右子树都大于根节点
let m = p
while postorder[p] > postorder[j] {
p += 1
}
// 不再大于时,说明索引应该等于 根节点
let b1 = (p == j)
// 验证左子树
let b2 = verify(i, m-1)
// 验证右子树
let b3 = verify(m, j-1)
return b1 && b2 && b3
}
return verify(0, postorder.count-1)
}
0x03 我的小作品
欢迎体验我的作品之一:小五笔
五笔学习好帮手~App Store 搜索即可~
边栏推荐
- 3D Game Modeling Learning Route
- Redis persistence mechanism
- 几行深度学习代码设计包含功能位点的候选免疫原、酶活性位点、蛋白结合蛋白、金属配位蛋白
- 803. 区间合并(贪心)左端点、右端点排序均可
- QoS Quality of Service Eight Congestion Avoidance
- FEMRL: A Framework for Large-Scale Privacy-Preserving Linkage of Patients’ Electronic Health Rec论文总结
- 运维面试题(每日一题)
- redis 事件
- 测试/开发程序员值这么多钱么?“我“不会愿赌服输......
- IIC通信协议总结[通俗易懂]
猜你喜欢
[教你做小游戏] 斗地主的手牌,如何布局?看25万粉游戏区UP主怎么说

电脑为什么会蓝屏的原因

状态压缩dp蒙德里安的梦想

Introduction to 3 d games beginners essential 】 【 modeling knowledge

转铁蛋白修饰长春新碱-粉防己碱脂质体|转铁蛋白修饰共载紫杉醇和金雀异黄素脂质体(试剂)

Solution for thread not gc-safe when Rider debugs ASP.NET Core

电脑如何去掉u盘写保护的状态

【毕业设计】基于Stm32的智能疫情防控门禁系统 - 单片机 嵌入式 物联网

FEMRL: A Framework for Large-Scale Privacy-Preserving Linkage of Patients’ Electronic Health Rec论文总结

电脑重装系统Win11格式化硬盘的详细方法
随机推荐
flask装饰器版登录、session
About npm/cnpm/npx/pnpm and yarn
flask生成路由的2种方式和反向生成url
【luogu CF1534F2】Falling Sand (Hard Version)(性质)(dfs)(线段树 / 单调队列 / 贪心)
『牛客|每日一题』岛屿数量
opengrok搭建[通俗易懂]
“2022零信任神兽方阵”启动调研,欢迎各单位填报信息
【C#】WCF和TCP消息通信练习,实现群聊功能
电脑开不了机是什么原因?
LeetCode·26.删除有序数组中的重复项·双指针
TikTok选品有什么技巧?
Optimizing Bloom Filter: Challenges, Solutions, and Comparisons论文总结
转铁蛋白修饰蛇床子素长循环脂质体/负载三七皂苷R1的PEG-PLGA纳米粒([email protected] NPs)
转铁蛋白修饰长春新碱-粉防己碱脂质体|转铁蛋白修饰共载紫杉醇和金雀异黄素脂质体(试剂)
机器学习|模型评估——AUC
关于npm/cnpm/npx/pnpm与yarn
谈谈宝石方块游戏中的设计
cordova 安装错误 Command failed: powershell 解决方法
laya打包发布apk
30分钟使用百度EasyDL实现健康码/行程码智能识别