Recca Chao 的 gitHub page

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

View on GitHub

Kotlin Leetcode - 543. Diameter of Binary 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 diameterOfBinaryTree(root: TreeNode?): Int {

    }
}

解題思路

這個題目處理樹的部分

我們可以使用遞迴的方式判斷樹的深度 diameter

Kotlin 參考解答

點擊展開解答

可以使用尾遞迴的方式撰寫

class Solution {
    fun diameterOfBinaryTree(root: TreeNode?): Int {
        var depth = 0

        tailrec fun search(node: TreeNode?): Int {
            node ?: return 0
            val left = search(node.left)
            val right = search(node.right)
            diameter = max(left + right, diameter)
            return 1 + max(left, right)
        }
        search(root)

        return depth
    }
}