LeetCode in Kotlin

1609. Even Odd Tree

Medium

A binary tree is named Even-Odd if it meets the following conditions:

Given the root of a binary tree, return true if the binary tree is Even-Odd, otherwise return false.

Example 1:

Input: root = [1,10,4,3,null,7,9,12,8,6,null,null,2]

Output: true

Explanation: The node values on each level are:

Level 0: [1]

Level 1: [10,4]

Level 2: [3,7,9]

Level 3: [12,8,6,2]

Since levels 0 and 2 are all odd and increasing and levels 1 and 3 are all even and decreasing, the tree is Even-Odd.

Example 2:

Input: root = [5,4,2,3,3,7]

Output: false

Explanation: The node values on each level are:

Level 0: [5]

Level 1: [4,2]

Level 2: [3,3,7]

Node values in level 2 must be in strictly increasing order, so the tree is not Even-Odd.

Example 3:

Input: root = [5,9,1,3,5,7]

Output: false

Explanation: Node values in the level 1 should be even integers.

Constraints:

Solution

import com_github_leetcode.TreeNode

/*
 * Example:
 * var ti = TreeNode(5)
 * var v = ti.`val`
 * Definition for a binary tree node.
 * class TreeNode(var `val`: Int) {
 *     var left: TreeNode? = null
 *     var right: TreeNode? = null
 * }
 */
class Solution {
    private val comp: MutableList<Int> = ArrayList()

    fun isEvenOddTree(root: TreeNode?): Boolean {
        return find(root, 0)
    }

    private fun find(root: TreeNode?, height: Int): Boolean {
        if (root == null) {
            return true
        }
        if (height % 2 == 0 && root.`val` % 2 == 0 || height % 2 == 1 && root.`val` % 2 == 1) {
            return false
        }
        if (comp.size == height) {
            comp.add(root.`val`)
        } else {
            if (height % 2 == 0) {
                if (comp[height] >= root.`val`) {
                    return false
                } else {
                    comp[height] = root.`val`
                }
            } else {
                if (comp[height] <= root.`val`) {
                    return false
                } else {
                    comp[height] = root.`val`
                }
            }
        }
        return find(root.left, height + 1) && find(root.right, height + 1)
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy