Leetcode Note: Go - Search in a Binary Search Tree

Search in a Binary Search Tree - LeetCode
https://leetcode.com/problems/search-in-a-binary-search-tree/

  • Go 言語で取り組んだメモ

所感

  • BST: Binary Search Tree と int の値 val が渡される
  • val の値を持つ Node と、その子孫の値を int 配列で return する

回答

100% golang solution - LeetCode Discuss
https://leetcode.com/problems/search-in-a-binary-search-tree/discuss/263927/100-golang-solution

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
func searchBST(root *TreeNode, val int) *TreeNode {
    if root==nil {
        return nil
    }

    if val==root.Val {
        return root
    } else if val > root.Val {
        return searchBST(root.Right,val)
    } 
    return searchBST(root.Left,val)
}
  • nil チェック
  • root.Val が val と一致するなら root を return
  • root.Val が val より小さい場合は root.Right を対象に再帰
  • それ以外の場合は root.Left を対象に再帰
  • BST は左右で大きさを判定できるので val との大小比較で対象をフィルタしていくことが有効