力扣 701. 二叉搜索树中的插入操作

这篇具有很好参考价值的文章主要介绍了力扣 701. 二叉搜索树中的插入操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目来源:https://leetcode.cn/problems/insert-into-a-binary-search-tree/description/

力扣 701. 二叉搜索树中的插入操作,开始C++吧,leetcode,算法,c++,数据结构,二叉树

 力扣 701. 二叉搜索树中的插入操作,开始C++吧,leetcode,算法,c++,数据结构,二叉树

思路:只要根据二叉搜索树的特性,将新插入节点的值不断地与树节点值进行比较,然后找到新节点所属的叶子节点位置,插入即好,返回根节点。

C++题解1:迭代法。需要用一个指针保存父节点。

class Solution {
public:
    TreeNode* insertIntoBST(TreeNode* root, int val) {
        TreeNode* cur = root, *pre = cur;
        TreeNode* newtree = new TreeNode(val);
        if(root == nullptr) return newtree;
        while(cur) {
            pre = cur;
            if(cur->val > val) cur = cur->left;
            else cur = cur->right;
        }
        if(pre->val > val) pre->left = newtree;
        else pre->right = newtree;
        return root;
    }
};

C++题解2:递归法,递归函数有返回值。来源代码随想录

class Solution {
public:
    TreeNode* insertIntoBST(TreeNode* root, int val) {
        if (root == NULL) {
            TreeNode* node = new TreeNode(val);
            return node;
        }
        if (root->val > val) root->left = insertIntoBST(root->left, val);
        if (root->val < val) root->right = insertIntoBST(root->right, val);
        return root;
    }
};

C++题解3:递归法,递归函数没有返回值,需要记录上一个节点(父节点)。来源代码随想录文章来源地址https://www.toymoban.com/news/detail-516665.html

class Solution {
private:
    TreeNode* parent;
    void traversal(TreeNode* cur, int val) {
        if (cur == NULL) {
            TreeNode* node = new TreeNode(val);
            if (val > parent->val) parent->right = node;
            else parent->left = node;
            return;
        }
        parent = cur;
        if (cur->val > val) traversal(cur->left, val);
        if (cur->val < val) traversal(cur->right, val);
        return;
    }

public:
    TreeNode* insertIntoBST(TreeNode* root, int val) {
        parent = new TreeNode(0);
        if (root == NULL) {
            root = new TreeNode(val);
        }
        traversal(root, val);
        return root;
    }
};

到了这里,关于力扣 701. 二叉搜索树中的插入操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • LeetCode(力扣)700. 二叉搜索树中的搜索Python

    https://leetcode.cn/problems/search-in-a-binary-search-tree/ 递归法 迭代

    2024年02月11日
    浏览(34)
  • C++力扣题目700--二叉搜索树中的搜索

    给定二叉搜索树(BST)的根节点  root  和一个整数值  val 。 你需要在 BST 中找到节点值等于  val  的节点。 返回以该节点为根的子树。 如果节点不存在,则返回  null  。 示例 1: 示例 2:   之前我们讲的都是普通二叉树,那么接下来看看二叉搜索树。 在关于二叉树,你该了

    2024年01月17日
    浏览(54)
  • C++力扣题目450--删除二叉搜索树中的节点

    给定一个二叉搜索树的根节点  root  和一个值  key ,删除二叉搜索树中的  key  对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首先找到需要删除的节点; 如果找到了,删除它。 示例

    2024年01月17日
    浏览(39)
  • 力扣日记1.11-【二叉树篇】450. 删除二叉搜索树中的节点

    日期:2024.1.11 参考:代码随想录、力扣 题目描述 难度:中等 给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。 一般来说,删除节点可分为两个步骤: 首

    2024年01月23日
    浏览(43)
  • 力扣HOT100 - 230. 二叉搜索树中第K小的元素

    解题思路:

    2024年04月25日
    浏览(41)
  • 力扣hot100 二叉树中的最大路径和 递归

    Problem: 124. 二叉树中的最大路径和 👨‍🏫 参考思路 时间复杂度: O ( n ) O(n) O ( n ) 空间复杂度: O ( n ) O(n) O ( n )

    2024年01月18日
    浏览(38)
  • LeetCode 501. 二叉搜索树中的众数【二叉搜索树中序遍历+Morris遍历】简单

    本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章中,我不仅会讲解多种解题思路及其优化,

    2024年02月06日
    浏览(45)
  • DAY21:二叉树(十一)二叉搜索树中的搜索+验证二叉搜索树(坑比较多,复盘)

    注意本题迭代法里面涉及的 if-else if-else 的问题,是比较容易出错的点 给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 输入:root = [4,2,7,1,3], val = 2 输出:[2,1,3] 输

    2024年02月08日
    浏览(38)
  • day20 最大的二叉树 合并二叉树 二叉搜索树中的搜索 验证二叉搜索树

    题目链接:654 最大二叉树 题意 根据不重复的整数数组nums构建最大的二叉树 ,根节点是数组中的最大值,最大值左边的子数组构建左子树,最大值右边的子数组构建右子树 nums数组中最少含有1个元素,并且nums中的元素数值均大于等于0 递归  递归三部曲: 1)确定递归函数的

    2024年01月21日
    浏览(44)
  • 【LeetCode75】第四十一题 二叉搜索树中的搜索

    目录 题目: 示例: 分析: 代码: 题目给我们一个搜索二叉树,让我们找出节点值等于目标的节点并返回出去。 首先我们可以直接遍历整棵二叉树,找到值相同的节点就返回出去,不过这样就没有用到二叉搜索数的特性了。 二叉搜索数的特性就是,每一个节点的左子树上所

    2024年02月10日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包