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

LeetCode75| 二叉搜索树

目录

700 二叉搜索树中的搜索

迭代 

递归

450 删除二叉搜索树中的节点


700 二叉搜索树中的搜索

注意二叉搜索树的性质即可 

迭代 

class Solution {
public:TreeNode* searchBST(TreeNode* root, int val) {while(root != NULL){if(root->val < val)root = root->right;else if(root->val > val)root = root->left;else return root;}return NULL;}
};

时间复杂度O(n)

空间复杂度O(n)

递归

class Solution {
public:TreeNode* searchBST(TreeNode* root, int val) {if(root == NULL)return NULL;if(root->val == val)return root;return root->val > val?searchBST(root->left,val) : searchBST(root->right,val); }
};

时间复杂度O(n)

空间复杂度O(1)

450 删除二叉搜索树中的节点

在删除待删除节点时有如下五种情况

  1. 没找到待删除节点,遍历到空节点后返回
  2. 待删除节点左右节点都为空,删除后直接返回空
  3. 待删除节点左节点为空,右节点不为空,删除节点后让右孩子作为根节点
  4. 待删除节点右节点为空,左节点不为空,删除节点后让左孩子作为根节点
  5. 待删除节点左右节点都不为空,将待删除节点的左孩子放到右孩子的最左节点的左孩子处,返回待删除节点的右孩子作为根节点
class Solution {
public:TreeNode* deleteNode(TreeNode* root, int key) {if(root == NULL)return NULL;//情况一if(root->val == key){if(root->left == NULL && root->right == NULL)return NULL;//情况二else if(root->left == NULL && root->right != NULL)return root->right;//情况三else if(root->left != NULL && root->right == NULL)return root->left;//情况四else{//情况五TreeNode* cur = root->right;while(cur->left != NULL){cur = cur->left;}cur->left = root->left;return root->right;}}if(root->val > key)root->left = deleteNode(root->left,key);if(root->val < key)root->right = deleteNode(root->right,key);return root;}
};

时间复杂度O(n)

空间复杂度O(n)

http://www.lryc.cn/news/272316.html

相关文章:

  • 博物馆3d虚拟场景复原制作有助于传承和弘扬中华民族优秀传统文化
  • 二维码地址门牌系统:便捷报修服务引领社区新篇章
  • c++基础(对c的扩展)
  • RS485数据采集模块,如何一次采集多个modbus设备数据?
  • 面试 Vue 框架八股文十问十答第一期
  • 【积微成著】性能测试调优实战与探索(存储模型优化+调用链路分析)| 京东物流技术团队
  • 建立分位制,用标准去量化优化效果 - 启动优化为例
  • Modbus 通信协议 二
  • 关于系统设计的一些思考
  • Java 第19章 IO流 课堂练习+本章作业
  • 一键制作电子样册,提升企业品牌形象
  • Linux 的引导与服务控制
  • 多输入多输出 | MATLAB实现SSA-CNN麻雀算法优化卷积神经网络多输入多输出预测
  • 高端电流检测方案
  • IP地址、子网掩码与网络地址
  • python 深度学习 记录遇到的报错问题10
  • linux下docker搭建Prometheus +SNMP Exporter +Grafana进行核心路由器交换机监控
  • Github 2023-12-31 开源项目日报 Top10
  • 管程-第三十三天
  • 嵌入式中断理解
  • React16源码: Hooks源码实现
  • 华为端口隔离高级用法经典案例
  • java项目启动jar包启动参数设置端口号
  • 【数据结构和算法】寻找数组的中心下标
  • 多粒度在研究中的应用
  • Docker命令---查看容器日志
  • Spring Boot 基于Redisson实现注解式分布式锁
  • Javascript 正则表达式零宽断言
  • Chocolatey
  • 雍禾植发成毛发行业标杆!雍禾医疗获“年度医疗大健康消费企业”