代码随想录之二叉搜索树的插入操作

本题在力扣701

本体思路学习于代码随想录

JAVA版本

思路:本题的思想较为简单,直接找到适合插入的结点来进行插入即可

解法一:

递归法:

复制代码
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 {
            root.left = insertIntoBST(root.left,val);
        }
        return root;
    }
}

解法二:

迭代法:

迭代法的思想就是找到最适合插入的结点,在最适合插入的结点来进行插入操作。

复制代码
class Solution {
    public TreeNode insertIntoBST(TreeNode root, int val) {
         if (root == null) return new TreeNode(val);

        TreeNode newRoot = root;
        TreeNode pre = root;
        while(root != null) {
            pre = root;
            if (root.val > val) {
                root = root.left;
            } else if (root.val < val) {
                root = root.right;
            } 
        }
        if (pre.val > val) {
            pre.left = new TreeNode(val);
        } else {
            pre.right = new TreeNode(val);
        }

        return newRoot;
    }
}
相关推荐
喂我花生(๑•̀ㅂ•́)و✧15 分钟前
JAVA中ArrayList的解析
java·开发语言·算法
摄殓永恒26 分钟前
【入门】斜角II
c++·算法·图论
David Bates2 小时前
代码随想录第41天:图论2(岛屿系列)
python·算法·图论
司小豆2 小时前
视觉-语言基础模型作为高效的机器人模仿学习范式
人工智能·算法·机器人
oioihoii3 小时前
C++23 新特性:为 std::pair 的转发构造函数添加默认实参
算法·c++23
智者知已应修善业3 小时前
【验证哥德巴赫猜想(奇数)】2021-11-19 15:54
c语言·c++·经验分享·笔记·算法
-qOVOp-4 小时前
zst-2001 历年真题 设计模式
java·算法·设计模式
evolution_language4 小时前
LintCode第68题-二叉树的前序遍历,第67题-二叉树的后序遍历
数据结构·算法·新手必刷编程50题
passionSnail4 小时前
《用MATLAB玩转游戏开发:从零开始打造你的数字乐园》基础篇(2D图形交互)-俄罗斯方块:用旋转矩阵打造经典
算法·matlab·矩阵·游戏程序·交互
yxc_inspire4 小时前
C++STL在算法竞赛中的应用详解
c++·算法·stl