LeetCode每日1题--二叉搜索树的搜索

52 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第8天,点击查看活动详情

前言

算法的重要性不言而喻!区分度高!

现在学习的门槛低了,只有能上网每个人都可以学编程!培训班6个月就可以培养出来能干活的人,你怎么从这些人中脱颖而出?没错!就是学算法,学一些底层和基础的东西。

说的功利点是为了竞争,卷死对手。真心话说就是能提高自己的基础能力,为技术可持续发展做好充分的准备!!!

提前入门学习书籍:CPrimerPlus、大话数据结构

image-20220705103735001

刷题网站

代码随想录 (programmercarl.com)

leetcode

我是按照代码随想录提供的刷题顺序进行刷题的,大家也可以去刷leetcode最热200道,都可以

刷题嘛,最重要的就是坚持了!!!

画图软件

OneNote

这个要经常用,遇见不懂的流程的话就拿它画一画!

笔记软件

Typoral

题目

image.png

解析

好的,今天我们来到了二叉搜索树!

它和普通的二叉树有什么不同呢?

  1. 若它的左子树不为空,则左子树上所有结点小于根节点的值
  2. 若它的右子树不为空,则右子树上所有结点大于根节点的值

哎,这二叉树还有大小,所以说儿茶搜索树的递归、迭代和普通的二叉树都是不一样的

那么这道题不就是找节点吗?

递归就完事了呗!

递归三部曲

  1. 确定递归的参数和返回值

参数为二叉搜索树和要查找的目标值,那返回值为找到的儿茶树。用题目中给到的即可


public TreeNode searchBST(TreeNode root, int val) {

  1. 确定递归终止的条件

终止条件就是当节点的值为null或者呢节点的值等于目标值那就返回root


if (root == null || root.val == val) {
    return root;
}
  1. 确定单层递归的逻辑 单层递归怎么写呢?

很简单,我们可以利用二叉搜索树的特性


if(root.val > val) searchBST(root.right,val);
if(root.val < val) searchBST(root.left,val);


一图胜千言

image.png

完整代码

class Solution {
    public TreeNode searchBST(TreeNode root, int val) {
        //确定递归终止条件
        if(root == null || root.val == val) return root;

        if(root.val < val){
            return searchBST(root.right,val);
        }else{
            return searchBST(root.left,val);
        }
    }
}