Files
2021-11-26 11:18:26 +08:00

1.6 KiB
Raw Blame History

700. Search in a Binary Search Tree

题目

You are given the root of a binary search tree (BST) and an integer val.

Find the node in the BST that the node's value equals val and return the subtree rooted with that node. If such a node does not exist, return null.

Example 1:

https://assets.leetcode.com/uploads/2021/01/12/tree1.jpg

Input: root = [4,2,7,1,3], val = 2
Output: [2,1,3]

Example 2:

https://assets.leetcode.com/uploads/2021/01/12/tree2.jpg

Input: root = [4,2,7,1,3], val = 5
Output: []

Constraints:

  • The number of nodes in the tree is in the range [1, 5000].
  • 1 <= Node.val <= 10000000
  • root is a binary search tree.
  • 1 <= val <= 10000000

题目大意

给定二叉搜索树BST的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。

解题思路

  • 根据二叉搜索树的性质(根节点的值大于左子树所有节点的值,小于右子树所有节点的值),进行递归求解

代码

package leetcode

type TreeNode struct {
	Val int
	Left *TreeNode
	Right *TreeNode
}

func searchBST(root *TreeNode, val int) *TreeNode {
	if root == nil {
		return nil
	}
	if root.Val == val {
		return root
	} else if root.Val < val {
		return searchBST(root.Right, val)
	} else {
		return searchBST(root.Left, val)
	}
}