news 2026/2/11 6:35:46

LC.701 | 二叉搜索树中的插入操作 | 树 | 迭代模拟

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LC.701 | 二叉搜索树中的插入操作 | 树 | 迭代模拟

输入:
二叉搜索树的根节点root和一个待插入的整数val

要求:
val插入到二叉搜索树中,并保证插入后整棵树仍然满足 BST 的性质(左 < 根 < 右)。
题目保证新值和原始树中任意节点值都不同。

输出:
插入节点后的二叉搜索树的根节点。


思路:

在二叉搜索树中插入新节点,其实就是**“一次失败的查找”**。我们要找这个值应该在的位置,直到走到死胡同(空指针),那个位置就是它该待的地方。

本题解采用了迭代(循环)法,相比递归不仅逻辑直观,而且空间复杂度更优。

  1. 特判空树
    如果根节点为空,直接用新值创建一个节点并返回,它就是新的根。

  2. 寻找插入位置(模拟)
    使用while循环遍历树,利用 BST 性质(val大往右走,val小往左走)。

    • 关键技巧 - “向前看一步”
      在决定向左还是向右移动之前,先检查那边的路是不是断的(即子节点是否为null)。
      • 如果是null,说明找到了!直接new一个节点接上去,任务完成,返回根节点。
      • 如果不是null,则移动指针root继续向下寻找。

复杂度:

  • 时间复杂度:O(H)
    • 树的高度。我们需要从根遍历到叶子节点。
  • 空间复杂度:O(1)
    • 使用了迭代法,不需要递归栈,仅使用了常数个辅助变量。

classSolution{public:TreeNode*insertIntoBST(TreeNode*root,intval){if(!root){TreeNode*ans=newTreeNode(val);returnans;}TreeNode*ans=root;while(root){if(root->val<val){if(!root->right){TreeNode*tmp=newTreeNode(val);root->right=tmp;returnans;}else{root=root->right;}}else{if(!root->left){TreeNode*tmp=newTreeNode(val);root->left=tmp;returnans;}else{root=root->left;}}}returnans;}};
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/10 20:29:25

VMA-virtual memory areas

进程的虚拟内存空间会被分成不同的若干区域&#xff0c;每个区域都有其相关的属性和用途&#xff1b;一个合法的地址总是落在某个区域当中的&#xff0c;这些区域也不会重叠, 在linux内核中&#xff0c;这样的区域被称之为虚拟内存区域(virtual memory areas),简称 VMA.一个vma…

作者头像 李华
网站建设 2026/2/7 17:12:53

AutoGPT镜像上线:解锁大模型自主智能任务新体验

AutoGPT镜像上线&#xff1a;解锁大模型自主智能任务新体验 在当今AI技术飞速演进的背景下&#xff0c;一个根本性的转变正在悄然发生——我们正从“人指挥机器做事”走向“机器主动替人完成任务”。过去&#xff0c;使用AI助手意味着你得一步步下指令&#xff1a;“写一段介绍…

作者头像 李华
网站建设 2026/2/12 1:14:21

AutoGPT如何减少token浪费?精简输出与压缩策略

AutoGPT如何减少token浪费&#xff1f;精简输出与压缩策略 在构建基于大语言模型&#xff08;LLM&#xff09;的自主智能体时&#xff0c;我们常常被其“类人”的推理能力所惊艳——AutoGPT能在无人干预下拆解目标、调用工具、迭代执行。但兴奋之余&#xff0c;一个现实问题迅速…

作者头像 李华