题目地址(700. 二叉搜索树中的搜索)
https://leetcode-cn.com/problems/search-in-a-binary-search-tree/
题目描述
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。例如,给定二叉搜索树:4/ \2 7/ \1 3和值: 2你应该返回如下子树:2/ \1 3在上述示例中,如果要找的值是 5,但因为没有节点值为 5,我们应该返回 NULL。
前置知识
公司
- 暂无
思路
关键点
代码
- 语言支持:Java
Java Code:
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val = val; }* TreeNode(int val, TreeNode left, TreeNode right) {* this.val = val;* this.left = left;* this.right = right;* }* }*/class Solution {//方法返回值 返回树节点 参数为节点和要判断的值 直接用原方法public TreeNode searchBST(TreeNode root, int val) {//中止条件 如果节点等于null 就返回null 如果等于目标值 就返回rootif (root == null || root.val == val) {return root;}//单层逻辑 根据二叉搜索树的特性 左边的数小于根节点 右边相反 所以只需要搜索单边 不需要遍历整棵树//当需要搜索单边或者特定边的时候 递归的时候直接return 搜索整颗树的时候不需要returnif (root.val > val) {return searchBST(root.left, val);}else {return searchBST(root.right, val);}}}
复杂度分析
令 n 为数组长度。
- 时间复杂度:
#card=math&code=O%28n%29&id=hOhHn)
- 空间复杂度:
#card=math&code=O%28n%29&id=NFRlt)
