给定二叉搜索树(BST)的根节点 root 和要插入树中的值 value ,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 ,新值和原始二叉搜索树中的任意节点值都不同。
注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回 任意有效的结果 。
示例 1:
输入:root = [4,2,7,1,3], val = 5
输出:[4,2,7,1,3,5]
因为插入一个结点就修改了二叉树,所以要接收递归函数的返回值,类似于构造一棵二叉树。
- class Solution {
- public:
- TreeNode* insertIntoBST(TreeNode* root, int val) {
- if(root==nullptr)//找到空位置插入结点
- return new TreeNode(val);
- if(root->val>val)
- root->left=insertIntoBST(root->left,val);
- if(root->val
- root->right=insertIntoBST(root->right,val);
- return root;
- }
- };
删除
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。
一般来说,删除节点可分为两个步骤:
首先找到需要删除的节点;
如果找到了,删除它。
示例 1:
输入:root = [5,3,6,2,4,null,7], key = 3
输出:[5,4,6,2,null,null,7]
解释:给定需要删除的节点值是 3,所以我们首先找到 3 这个节点,然后删除它。
一个正确的答案是 [5,4,6,2,null,null,7], 如下图所示。
另一个正确答案是 [5,2,6,null,4,null,7]。
删除结点有三种情况:1.删除叶子结点 2.删除一度结点 3.删除二度结点
- class Solution {
- public:
- TreeNode* deleteNode(TreeNode* root, int key)
- {
- if(root==nullptr)
- return nullptr;
- if(root->val==key)
- {
- //情况1、2全部解决。要删除的结点是叶子结点,左子树为空,返回右子树(null),删除成功;要删除的是一度结点,左子树为空或右子树为空,返回不为空的那棵子树,也成功删除
- if(root->left==nullptr) return root->right;
- if(root->right==nullptr) return root->left;
- //情况3,删除二度结点。找到左子树中最大的那个节点,或者右子树中最小的那个节点来接替要删除的结点
- //得到右子树最小的那个结点(先找到右子树,然后一直朝左走到尽头)
- TreeNode* r=root->right;
- while(r->left!=nullptr)
- r=r->left;
- //删除右子树中最小的结点
- root->right=deleteNode(root->right,r->val);
- //用右子树最小的结点来替换root结点(不采用直接交换root和r的val值的方式,而是通过指针操作交换结点,不关心内部存储的数据)
- r->left=root->left;//root的左子树接到r上
- r->right=root->right;//root的右子树接到r上
- root=r;//root指向r
- }
- else if(root->val>key)
- {
- root->left=deleteNode(root->left,key);
- }
- else if(root->val
- {
- root->right=deleteNode(root->right,key);
- }
- return root;
- }
- };
-
相关阅读:
运算符,switch
力扣刷题 day53:10-23
[附源码]Python计算机毕业设计SSM开放式在线课程教学与辅助平台(程序+LW)
如何提升和扩展 PostgreSQL — 从共享缓冲区到内存数据网格
给定一个整数数组 nums 和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。
C++与正则表达式
vue-router滚动行为
JsonPath详解
JavaScript 中的一些奇怪问题
Centos7上面安装uWSGI 部署项目测试
-
原文地址:https://blog.csdn.net/weixin_50437588/article/details/126171092