当前位置: 首页 > news >正文

代码随想录训练营第20天|235. 二叉搜索树的最近公共祖先、 701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

一、二叉搜索树的最近公共祖先

利用二叉树特性,最近公共祖先,大于其中一个小于其中一个

代码:

class Solution {
public:  TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {//不需要终止判断,因为一定找的到// if(!root) return NULL;TreeNode* result=NULL;if(root->val>p->val&&root->val>q->val){result=lowestCommonAncestor(root->left,p,q);}else if(root->val<p->val&&root->val<q->val){result=lowestCommonAncestor(root->right,p,q);}elsereturn root;//找到后就开始不断返回,因为是if,else if,所有是有方向的搜索,找到后返回return result;}
};

二、二叉搜索树中的插入操作 

可以插入在叶子节点

代码:

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;}
};

三、删除二叉搜索树中的节点

五种情况

代码:

class Solution {
public:TreeNode* deleteNode(TreeNode* root, int key) {if(!root) return nullptr;if(root->val==key){if(root->left==nullptr&&root->right==nullptr){delete root;return nullptr;}else if(root->left==nullptr&&root->right!=nullptr){TreeNode* temp=root->right;delete root;return temp;}else if(root->left!=nullptr&&root->right==nullptr){TreeNode* temp=root->left;delete root;return temp;}else{TreeNode* temp=root->right;while(temp->left!=nullptr){temp=temp->left;}temp->left=root->left;TreeNode* result=root->right;delete root;return result;}}if(key<root->val){root->left=deleteNode(root->left,key);}if(key>root->val){root->right=deleteNode(root->right,key);}return root;}
};


http://www.mrgr.cn/news/30957.html

相关文章:

  • 【计算机网络】网络框架
  • 面试击穿mysql
  • .NET中通过C#实现Excel与DataTable的数据互转
  • 会议直击|美格智能受邀出席第三届无锡智能网联汽车生态大会,共筑汽车产业新质生产力
  • 分布式数据库:深入探讨架构、挑战与未来趋势
  • Kafka面试题解答(二)
  • 欧拉筛素数板子
  • 硬盘数据恢复必备:4 款强大硬盘数据恢复软件推荐!
  • [ComfyUI]Flux:更强融图!阿里最新重绘CN模型,生态加速器
  • OpenCV_图像像素读写操作
  • 什么是css?
  • 实现快速排序(Quicksort)
  • 【Git】Git Commit Angular规范详解
  • IMS 中private user id/public user id的格式
  • 基于Springboot+vue实现的Cosplay论坛系统
  • SwiftData 共享数据库在 App 中的改变无法被 Widgets 感知的原因和解决
  • 新160个crackme - 060-snake
  • 条件编译代码记录
  • Nomad Web服务终于成熟了!
  • 学习使用Docker
  • Tableau Einstein 重磅亮相,融合 AI 与数据云提供统一且无缝的分析新体验!
  • 需求3:照猫画虎
  • 第314题|参考!如何做到【一题多解】|武忠祥老师每日一题
  • Linux操作系统 进程(3)
  • 免密执行远程服务命令
  • Revit学习记录-版本2018【持续补充】