当前位置:网站首页>【二叉树】奇偶树
【二叉树】奇偶树
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 搜索即可~
边栏推荐
猜你喜欢

直播app开发,是优化直播体验不得不关注的两大指标

使用Canvas实现网页鼠标签名效果

使用Canvas 实现手机端签名

DOM series of touch screen events

计算机系统与网络安全技术——第一章——信息安全概述——1.1-网络安全定义——什么是信息?

ESP8266-Arduino编程实例-GA1A12S202对数刻度模拟光传感器

【黑马早报】胡军代言悟空理财涉嫌欺诈,疑似涉及390亿元;涪陵榨菜回应榨菜吃出脚指甲; 鸿星尔克再捐1个亿;腾讯控股股价跌回5年前...

MySQL's maximum recommended number of rows is 2000w, is it reliable?

22年镜头“卷”史,智能手机之战卷进死胡同

阿里官方 Redis 开发规范
随机推荐
LeetCode第 303 场周赛
ECCV 2022 | Poseur:你以为我是姿态估计,其实是目标检测哒
MUI 做手机返回操作栏
【Untitled】
网站备案后没有找到站点 您没有将此域名或IP绑定到对应站点! 配置文件未生效!
直播app开发,是优化直播体验不得不关注的两大指标
中国驻西班牙使馆再次提醒留学人员注意暑期安全
【paper】Cam2BEV论文浅析
The untiy Resources directory dynamically loads resources
搭建云计算平台(云计算管理平台搭建)
泰国 好产品推荐!2022年最好的胶原蛋白评测有哪些? 喝出健康和美丽适合需要改善肌肤
HashCode technology insider interview must ask
首席工程师究竟是怎样的存在?
DOM树jsjs特效代码
MySQL INTERVAL Keyword Guidelines
金仓数据库KingbaseES安全指南--6.3. Kerberos身份验证
Isometric graph neural networks shine in drug discovery
PAT 甲级 A1030 Travel Plan
Winform的UI帮助类——部分组件会使用到DevExpress组件
经验|如何做好业务测试?