奇偶树

作者: xialu | 来源:发表于2021-12-25 22:58 被阅读0次

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/even-odd-tree

    题目描述:

    如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 :
    二叉树根节点所在层下标为 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, 105] 内
    • 1 <= Node.val <= 106
    代码实现:
    class Solution {
        public boolean isEvenOddTree(TreeNode root) {
           Deque<TreeNode> d = new ArrayDeque();
           d.addLast(root);
           // true:偶数层,false:奇数层.
           boolean flag = true;
           while (!d.isEmpty()) {
               // 节点值的范围:1 <= Node.val <= 1000000
               int size = d.size(), pre = flag ? 0 : 0x3f3f3f3f;
               // 同一层
               while (size-- > 0) {
                   TreeNode node = d.pollFirst();
                   int cur = node.val;
                   // 偶数层,如果数字是偶数或者不严格递增,则返回false.
                   if (flag && (cur % 2 == 0 || cur <= pre)) return false;
                   // 奇数层,如果数字是奇数或者不严格递减,则返回false.
                   if (!flag && (cur % 2 != 0 || cur >= pre)) return false;
                   // 记录当前元素.
                   pre = cur;
                   // 如果左孩子节点存在.
                   if (node.left != null) d.addLast(node.left);
                   // 如果右孩子节点存在.
                   if (node.right != null) d.addLast(node.right);
               }
               // 更新奇偶.
               flag = !flag;
           }
           return true;
        }
    }
    

    相关文章

      网友评论

          本文标题:奇偶树

          本文链接:https://www.haomeiwen.com/subject/qiujqrtx.html