1609. 奇偶树 £神魔★判官ぃ 2023-10-05 21:13 31阅读 0赞 如果一棵二叉树满足下述几个条件,则可以称为 **奇偶树** : * 二叉树根节点所在层下标为 `0` ,根的子节点所在层下标为 `1` ,根的孙节点所在层下标为 `2` ,依此类推。 * **偶数下标** 层上的所有节点的值都是 **奇** 整数,从左到右按顺序 **严格递增** * **奇数下标** 层上的所有节点的值都是 **偶** 整数,从左到右按顺序 **严格递减** 给你二叉树的根节点,如果二叉树为 **奇偶树** ,则返回 `true` ,否则返回 `false` 。 **示例 1:** **![1b9a5caf416da21ec38c8917efadf45f.png][]** 输入: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:** **![1efb71dc7d7870c97138dc8e39e31128.png][]** 输入:root = [5,4,2,3,3,7] 输出:false 解释:每一层的节点值分别是: 0 层:[5] 1 层:[4,2] 2 层:[3,3,7] 2 层上的节点值不满足严格递增的条件,所以这不是一棵奇偶树。 **示例 3:** ![536405acb4f9ed8bf768257e5ed7edb0.png][] 输入: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, 105]` 内 * `1 <= Node.val <= 106` package Solution1609; import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.Queue; class Solution { public boolean isEvenOddTree(TreeNode root) { Queue<TreeNode> q = new LinkedList<>(); q.add(root); int level = 0; while (!q.isEmpty()) { int count = q.size(); int prev = 0; while (count-- > 0) { TreeNode temp = q.poll(); if (prev == 0) { if (level % 2 == 0) { if (temp.val % 2 == 0) { return false; } } if (level % 2 == 1) { if (temp.val % 2 == 1) { return false; } } } if (prev != 0) { if (level % 2 == 0) { if (temp.val % 2 == 0 || temp.val <= prev) { return false; } } if (level % 2 == 1) { if (temp.val % 2 == 1 || temp.val >= prev) { return false; } } } prev = temp.val; if (temp.left != null) q.add(temp.left); if (temp.right != null) q.add(temp.right); } level++; } return true; } public static void main(String[] args) { Solution sol = new Solution(); // Add nodes to the binary tree TreeNode root = new TreeNode(1); root.left = new TreeNode(10); root.right = new TreeNode(4); root.left.left = new TreeNode(3); root.right.left = new TreeNode(7); root.right.right = new TreeNode(9); root.left.left.left = new TreeNode(12); root.left.left.left = new TreeNode(8); root.right.left.left = new TreeNode(6); root.right.right.right = new TreeNode(2); System.out.println(sol.isEvenOddTree(root)); } } [1b9a5caf416da21ec38c8917efadf45f.png]: https://img-blog.csdnimg.cn/img_convert/1b9a5caf416da21ec38c8917efadf45f.png [1efb71dc7d7870c97138dc8e39e31128.png]: https://img-blog.csdnimg.cn/img_convert/1efb71dc7d7870c97138dc8e39e31128.png [536405acb4f9ed8bf768257e5ed7edb0.png]: https://img-blog.csdnimg.cn/img_convert/536405acb4f9ed8bf768257e5ed7edb0.png
相关 【LeetCode】1609. 奇偶树、1122. 数组的相对排序 > 作者:小卢 > > 专栏:《Leetcode》 > > 喜欢的话:世间因为少年的挺身而出,而更加瑰丽。 ——《人民日报》 > > ![7d63d497b511410 淡淡的烟草味﹌/ 2024年03月25日 20:53/ 0 赞/ 60 阅读
相关 1609. 奇偶树 如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 : 二叉树根节点所在层下标为 `0` ,根的子节点所在层下标为 `1` ,根的孙节点所在层下标为 `2` ,依此类推 £神魔★判官ぃ/ 2023年10月05日 21:13/ 0 赞/ 32 阅读
相关 奇偶树题解 题目 > 这是leetcode里的一道题,需要考虑的情况也比较多,个人感觉还是很有意思的,一开始看到题目的时候我居然想到是队列加集合的方式来解,而且我还真就用暴力的方式写 小咪咪/ 2023年09月26日 19:58/ 0 赞/ 81 阅读
相关 奇偶校验 一、理解 在一个字节后加一位,代表一个字节中的1的个数的奇偶,由此来校验字节内容。 二、百度百科 > 奇偶校验(Parity Check)是一种校验代码传输正确性 怼烎@/ 2022年11月15日 03:57/ 0 赞/ 292 阅读
相关 奇偶性 奇偶性 Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^\_^ 题目描述 判断输入的数据的奇偶性。 输入 青旅半醒/ 2022年08月10日 04:58/ 0 赞/ 226 阅读
相关 奇偶剪枝 这里我来讲一下搜索中要用到的奇偶剪枝的原理: ![1366696322_8124.gif][] 看张图,没障碍物\时,S到E的最短路长为6,但是当有障碍 ゞ 浴缸里的玫瑰/ 2022年08月08日 14:52/ 0 赞/ 217 阅读
相关 奇偶剪枝 明天再详细补充。。。百度百科粘过来的 ![20130522221549745][] 奇偶剪枝是数据结构的搜索中,剪枝的一种特殊小技巧。 描述 现假设起点为(sx, 以你之姓@/ 2022年06月14日 23:11/ 0 赞/ 269 阅读
相关 奇偶判断 问题描述 能被2整除的数称为偶数,不能被2整除的数称为奇数。给一个整数x,判断x是奇数还是偶数。 输入格式 输入包括一个整数x,0<=x<=100000000。 ﹏ヽ暗。殇╰゛Y/ 2022年04月01日 07:48/ 0 赞/ 274 阅读
相关 奇偶索引 content=0 s = input('请输入') for i in range(len(s)): if i%2==1 and s[i r囧r小猫/ 2022年01月07日 04:53/ 0 赞/ 283 阅读
相关 奇偶校验 奇偶校验有两种校验规则: 奇校验:使完整编码(有效位和校验位)中的"1"的个数为奇数个; 偶校验:使完整编码(有效位和校验位)中的"1"的个数为偶数个 直接举例 青旅半醒/ 2021年12月16日 17:55/ 0 赞/ 364 阅读
还没有评论,来说两句吧...