二叉搜索树中的搜索
题目描述:
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。
例如, 给定二叉搜索树: 4 / \ 2 7 / \ 1 3 和值: 2 你应该返回如下子树: 2 / \ 1 3 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解题思路:
我们知道**二叉搜索树(BST)**的特性:
- 若它的左子树不为空,则所有左子树上的值均小于其根节点的值
- 若它的右子树不为空,则所有右子树上的值均大于其根节点得值
- 它的左右子树也分别为二叉搜索树
那么思路就很简单了:
- 如果val小于当前结点的值,转向其左子树继续搜索;
- 如果val大于当前结点的值,转向其右子树继续搜索;
- 如果已找到,则返回当前结点。
/** * 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 (root.Val > val) { return searchBST(root.Left, val); } else if (root.Val < val) { return searchBST(root.Right, val); } else { return root; } }
small_lei_it 技术无止境,追求更高。