Recca Chao 的 gitHub page

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

View on GitHub

Kotlin Leetcode - 226. Invert Binary Tree

題目連接

class Solution {
    fun invertTree(root: TreeNode?): TreeNode? {
    }
}

解題思路

這一題考的是對樹的處理

算是很基礎的遞迴處理

如果利用 scope function

可以在單一表達式內完成

Kotlin 參考解答

點擊展開解答
class Solution {
    fun invertTree(root: TreeNode?): TreeNode? {
        if(root == null) return null
        
        val node = TreeNode(root.`val`)
        node.left = invertTree(root.right)
        node.right = invertTree(root.left)

        return node
    }
}

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

class Solution {
    fun invertTree(root: TreeNode?): TreeNode? = 
        when (root) {
            null -> null
            else -> TreeNode(root.`val`).also {
                it.left = invertTree(root.right)
                it.right = invertTree(root.left)
            }
        }
}