数据结构-700. 二叉搜索树中的搜索

79 阅读1分钟

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

给定二叉搜索树(BST)的根节点 root 和一个整数值 val。

你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。

 

示例 1:

image.png 输入:root = [4,2,7,1,3], val = 2 输出:[2,1,3] Example 2:

image.png 输入:root = [4,2,7,1,3], val = 5 输出:[]  

提示:

数中节点数在 [1, 5000] 范围内 1 <= Node.val <= 107 root 是二叉搜索树 1 <= val <= 107

来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/se… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

二、思路分析:

根据提意可知:二叉搜索树(BST)满足如下性质:

  • 左子树所有节点的元素值均小于根的元素值;
  • 右子树所有节点的元素值均大于根的元素值。 那么进行「递归」搜索即可。

具体判断如下

  • val = 当前结点的值, 直接return 当前结点
  • val < 当前结点的值, 继续在当前结点的左子树中搜索
  • val > 当前结点的值, 继续在当前结点的右子树中搜索

三、AC代码

class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        if (root == null) {
            return null;
        }
        if (val == root.val) {
            return root;
        }
        return searchBST(val < root.val ? root.left : root.right, val);
    }
}

四、总结:

image.png 掘友们,解题不易,如果觉得有用就留下个赞或评论再走吧!谢啦~ 💐