当前位置: 首页 > web >正文

leetcode1609. 奇偶树-meidum

1 题目: 奇偶树

官方标定难度:中

如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :

二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。
偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增
奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减
给你二叉树的根节点,如果二叉树为 奇偶树 ,则返回 true ,否则返回 false 。

示例 1:

在这里插入图片描述

输入:root = [1,10,4,3,null,7,9,12,8,6,null,null,2]
输出:true
解释:每一层的节点值分别是:
0 层:[1]
1 层:[10,4]
2 层:[3,7,9]
3 层:[12,8,6,2]
由于 0 层和 2 层上的节点值都是奇数且严格递增,而 1 层和 3 层上的节点值都是偶数且严格递减,因此这是一棵奇偶树。

示例 2:

在这里插入图片描述

输入:root = [5,4,2,3,3,7]
输出:false
解释:每一层的节点值分别是:
0 层:[5]
1 层:[4,2]
2 层:[3,3,7]
2 层上的节点值不满足严格递增的条件,所以这不是一棵奇偶树。

示例 3:

在这里插入图片描述

输入:root = [5,9,1,3,5,7]
输出:false
解释:1 层上的节点值应为偶数。

示例 4:

输入:root = [1]
输出:true
示例 5:

输入:root = [11,8,6,1,3,9,11,30,20,18,16,12,10,4,2,17]
输出:true

提示:

树中节点数在范围 [ 1 , 10 5 ] [1, 10^5] [1,105]
1 < = N o d e . v a l < = 10 6 1 <= Node.val <= 10^6 1<=Node.val<=106

2 solution

逐个节点验证是否满足奇偶和单调性要求即可。

代码

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {static const int N = 1e5 + 1;int pre[N];bool dfs(TreeNode *root, int l) {if (!root) return true;if (l & 1) {if (root->val & 1 || root->val >= pre[l]) return false;} else {if (!(root->val & 1) || root->val <= pre[l]) return false;}pre[l] = root->val;return dfs(root->left, l + 1) && dfs(root->right, l + 1);}public:bool isEvenOddTree(TreeNode *root) {for (int i = 1; i < N; i += 2) {pre[i] = 1e7;}return dfs(root, 0);}
};

结果

在这里插入图片描述

http://www.xdnf.cn/news/12565.html

相关文章:

  • untiy 模拟人物在街道走路和跑步
  • Shell编程核心符号与格式化操作详解
  • [electron]预脚本不显示内联script
  • 使用docker安装vLLM、并安装modelscope本地模型
  • 三格电子——EtherCAT分支器的应用场景
  • 2025年硬盘坏道修复工具指南:让您的硬盘焕发新生
  • 【Zephyr 系列 11】使用 NVS 实现 BLE 参数持久化:掉电不丢配置,开机自动加载
  • 【k8s】k8s集群搭建
  • 洞悉 MySQL 查询性能:EXPLAIN 命令 type 字段详解
  • 基于本地LLM与MCP架构构建AI智能体全指南
  • Nest框架: 日志功能之收集,筛选,存储,维护
  • c语言 头文件封装跨平台线程
  • SATA3.0接口PCB布局走线注意事项
  • 【Redis】Cluster集群
  • C++11 右值引用:从入门到精通
  • Vue3 卡片绑定滚动条 随着滚动条展开效果 GSAP动画库 ScrollTrigger滚动条插件
  • 2025/6/4—halcon算子及知识点总结
  • windows11右键取消二次加载
  • 网络编程之服务器模型与UDP编程
  • CVPR 2025 | 港中文 MMLab 提出文生图模型 T2I-R1,文生图进入R1时刻!
  • 让敏感数据在流转与存储中始终守护在安全范围
  • mysql的分页场景下,页数越大查询速度越慢的解决方法
  • K-Means颜色变卦和渐变色
  • linux系统终端远程控制和传输方式
  • 【 *p取出内容 a得到地址】
  • clickhouse 学习总结
  • KuiperInfer跟学第二课——张量的构建与实现
  • 什么是质量管理系统?质量管理系统都有哪些功能?
  • 5G网络中频段的分配
  • 无公网IP外网可访问项目研发管理软件 codes