zoukankan      html  css  js  c++  java
  • 1609. 奇偶树

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

    二叉树根节点所在层下标为 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

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

    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, val=0, left=None, right=None):
    #         self.val = val
    #         self.left = left
    #         self.right = right
    class Solution:
        def isEvenOddTree(self, root: TreeNode) -> bool:
            def levelOrder(root):
                if root is None:
                    return []
                res=[]
                def add_to_res(level,node):
                    if level>len(res)-1:
                        res.append([])
                    res[level].append(node.val)
                    if node.left:
                        add_to_res(level+1,node.left)
                    if node.right:
                        add_to_res(level+1,node.right)
    
                add_to_res(0,root)
                return res
            a=levelOrder(root)
            for i in range(len(a)):
                if i%2==0:
                    for j in a[i]:
                        if j%2==0:
                            return False
                    for j in range(len(a[i])-1):
                        if a[i][j+1]<=a[i][j]:
                            return False
                else:
                    for j in a[i]:
                        if j%2==1:
                            return False
                    for j in range(len(a[i])-1):
                        if a[i][j+1]>=a[i][j]:
                            return False
            return True
  • 相关阅读:
    phpajax高级篇
    一天学会ajax (php环境)
    php生成静态文件的方法
    MongoDB查询文档
    MongoDB删除文档
    MongoDB索引管理
    MongoDB插入文档
    MongoDB排序记录
    MongoDB 更新文档
    mongoDB 固定集合(capped collection)
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13802911.html
Copyright © 2011-2022 走看看