LeetCode每日1题--二叉搜索树中的插入操作

51 阅读2分钟

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

前言

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

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

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

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

image-20220705103735001

刷题网站

代码随想录 (programmercarl.com)

leetcode

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

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

画图软件

OneNote

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

笔记软件

Typoral

题目

力扣题目链接

解析

这道题看上去很难,其实很简答就是递归的运用

说是在二叉搜索树中进行插入,其实按照二叉搜索树的特性进行插入就可以了

递归三部曲

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

最后要求的结果是返回根节点,那返回直接就是TreeNode。参数的话是根节点和要插入的值

所以直接用题目给的函数和返回值即可


public TreeNode insertIntoBST(TreeNode root, int val) {}

  1. 确定递归终止的条件

如果当前节点为空,也就意味着val找到了合适的位置,此时创建节点直接返回。

if (root == null) return new TreeNode(val);
  1. 确定单层递归的逻辑

当你插入的节点值大于根节点那就去那就在右子树插入,小于根节点自然就在左子树插入

然后由于递归的特性,它又会和下面的节点进行比较,这样的话就可以再满足二叉搜索树的条件下进行插入了


if (root.val < val){
    root.right = insertIntoBST(root.right, val); // 递归创建右子树
}else if (root.val > val){
    root.left = insertIntoBST(root.left, val); // 递归创建左子树
}
return root;

image.png

完整代码

我们做到这里其实就能发现,递归用的好,做题没烦恼啊!

有了前面的积累后面的题目做起来自然就迎刃而解了!

class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
   
        if (root == null) return new TreeNode(val);
            
        if (root.val < val){
            root.right = insertIntoBST(root.right, val); // 递归创建右子树
        }else if (root.val > val){
            root.left = insertIntoBST(root.left, val); // 递归创建左子树
        }
        return root;
    }
}