Recca Chao 的 gitHub page

推廣網站開發,包含 Laravel 和 Kotlin 後端撰寫、自動化測試、讀書心得等。Taiwan Kotlin User Group 管理員。

View on GitHub

Kotlin Leetcode - 100. Same Tree

題目連接

/**
 * 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 {
    fun isSameTree(p: TreeNode?, q: TreeNode?): Boolean {
        
    }
}

解題思路

這一題考的是樹的基本操作

只要用到樹狀結構,很常會使用到遞迴

這邊的遞迴思路如下

一樣是遞迴,我們可以用 if 邏輯撰寫

也可以用 when 邏輯統整成單一表達式

Kotlin 參考解答

點擊展開解答

if 的寫法

class Solution {
    fun isSameTree(p: TreeNode?, q: TreeNode?): Boolean {
        return if (p == null && q == null) {
            true
        } else if ((p == null) || (q == null)) {
            false
        } else if (p!!.`val` != q!!.`val`) {
            false
        } else {
            isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
        }
    }
}

when 單一表達式內完成的方式如下

class Solution {
    fun isSameTree(p: TreeNode?, q: TreeNode?): Boolean {
        return when {
            p == null && q == null -> true
            p == null -> false
            q == null -> false
            p!!.`val` != q!!.`val` -> false
            else -> isSameTree(p.left, q.left) && isSameTree(p.right, q.right)
        }
    }
}

回到 leetcode 列表