当前位置:网站首页>【二叉树】奇偶树
【二叉树】奇偶树
2022-08-01 16:32:00 【豪冷啊】
0x00 题目
如果一棵二叉树满足下述几个条件
则可以称为 奇偶树
:
二叉树根
节点所在层下标为 0
根的子
节点所在层下标为 1
根的孙节点所在层下标为 2
,依此类推偶数下标
层上的所有节点的值都是 奇
整数
从左到右按顺序 严格递增
奇数下标
层上的所有节点的值都是 偶
整数
从左到右按顺序 严格递减
给你二叉树的根节点
如果二叉树为 奇偶树
,则返回 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 isEvenOddTree(_ root: TreeNode?) -> Bool {
guard let root = root else { return false }
// 根节点为奇数
// 1, 奇数, 0, 偶数
var level: Int = 1
var queue: [TreeNode] = []
queue.append(root)
while !queue.isEmpty {
var temp: [TreeNode] = []
var arr: [Int] = []
// 判断每个值是否符合要求
// 收集下一层节点
for i in 0..<queue.count {
let node = queue[i]
if node.val % 2 != level {
return false
}
arr.append(node.val)
if let left = node.left {
temp.append(left)
}
if let right = node.right {
temp.append(right)
}
}
// 偶数层,是递减的,反转一下,改成递增
if level == 0 {
arr.reverse()
}
// 递增判断
for i in 1..<arr.count {
if arr[i-1] >= arr[i] {
return false
}
}
// 下一层
queue = temp
// 切换奇偶
level = (level == 1 ? 0 : 1)
}
return true
}
0x03 我的小作品
欢迎体验我的作品之一:小笔记-XNote
笔记好帮手
做笔记一步到位App Store
搜索即可~
边栏推荐
猜你喜欢
阿里官方 Redis 开发规范
The site is not found after the website is filed. You have not bound this domain name or IP to the corresponding site! The configuration file does not take effect!
Daily Yuxian Big Defeat
ESP8266-Arduino编程实例-MLX90614红外测温传感器驱动
1个月写900多条用例,2线城市年薪33W+的测试经理能有多卷?
计算机系统与网络安全技术——第一章——信息安全概述——1.1-网络安全定义——什么是信息?
直播app开发,是优化直播体验不得不关注的两大指标
每日优鲜大败局
08 spark 集群搭建
Shell basic function writing
随机推荐
测试技术|白盒测试以及代码覆盖率实践
PAT 甲级 A1003 Emergency
珠海市生物安全P3实验室主体结构封顶
金仓数据库KingbaseES安全指南--6.5. LDAP身份验证
canvas粒子雨动画js特效
【Unity,C#】哨兵射线触发器模板代码
SQL函数 TIMESTAMPDIFF
搭建云计算平台(云计算管理平台搭建)
完全背包问题求组合数和排列数
03 gp 集群搭建
首席工程师究竟是怎样的存在?
【Unity,C#】哨兵点位循迹模板代码
Ali's official Redis development specification
京东软件测试面试题,仅30题就已经拯救了50%的人
04 flink cluster construction
夸克网盘资源站
A full review of mainstream timed task solutions
怎么安装汉化包(svn中文语言包安装)
nodejs安装淘宝镜像(配置淘宝镜像)
How to Efficiently Develop Jmix Extension Components