701. 二叉搜索树中的插入操作
✅做题思路or感想:
这里的插入值的操作不是在节点和节点直接插一个新节点,而是在老的二叉树的末尾新增节点。。。
故这里直接利用二叉搜索树的特性直接找新节点位置就好了
值得注意的是这里是需要让前一个节点链接新节点,也就是存在父子节点之间的赋值操作,所以这里要记录上一个节点!!!
class Solution {
public:
//这里要多一个参数:记录上一个节点
void dfs(TreeNode* root, int val, TreeNode* pre) {
if (root == nullptr) { //如果发现合适位置的空位,则添加至此
root = new TreeNode(val);
//上一个节点要把这个节点链接上
if (pre->val > val)pre->left = root;
if (pre->val < val)pre->right = root;
return;
}
//根据二叉搜索树的性质来递归
if (root->val > val)dfs(root->left, val, root);
if (root->val < val)dfs(root->right, val, root);
}
TreeNode* insertIntoBST(TreeNode* root, int val) {
if (root != nullptr) //谨防奇怪测试用例,真的离谱
dfs(root, val, nullptr);
else root = new TreeNode(val);
return root;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端