#LeetCode:700. Search in a Binary Search Tree

灆洢 2020-06-15 20:27:43

此題要搜尋某元素在二元搜尋樹中的位置。

基本上,本題就是基礎的二元搜尋樹搜尋,巡覽到某一節點 root,凡 root 中的值比要找的值小,則往節點的左端走;凡 root 中的值比要找的值大,則往節點的右端走;若為相等的話就找到並回傳即可。

Kotlin(244ms)

/*******************************************************
 * LeetCode 700. Search in a Binary Search Tree        *
 * Author: Maplewing [at] knightzone.studio            *
 * Version: 2020/06/15                                 *
 *******************************************************/
/**
 * 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 searchBST(root: TreeNode?, `val`: Int): TreeNode? {
        if (root == null) return null

        return when {
            root.`val` == `val` -> root
            root.`val` < `val` -> searchBST(root.right, `val`)
            else -> searchBST(root.left, `val`)
        }
    }
}

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料