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

算法训练营day24

题目1:235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode)

可以用二叉树最近公共祖先来做

class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root == NULL) return NULL;if(root == p || root == q) return root;TreeNode* leftnode = lowestCommonAncestor(root->left, p, q);TreeNode* rightnode = lowestCommonAncestor(root->right, p, q);if(leftnode != NULL && rightnode != NULL) return root;else if(leftnode != NULL && rightnode == NULL) return leftnode;else if(leftnode == NULL && rightnode != NULL) return rightnode;else return NULL;}
};
class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root == NULL) return NULL;// p q都在 node左边if(root->val > p->val && root->val > q->val) {TreeNode* leftnode = lowestCommonAncestor(root->left, p, q);if(leftnode != NULL) return leftnode;}// p q都在 node右边if(root->val < p->val && root->val < q->val) {TreeNode* rightnode = lowestCommonAncestor(root->right, p, q);if(rightnode != NULL) return rightnode;}// 就剩在中间了return root;}
};

题目2:701. 二叉搜索树中的插入操作 - 力扣(LeetCode)

// 根据搜索二叉树的性质,向左向右遍历遇到NULL 就插入节点即可
class Solution {
public:void insert(TreeNode*& root, int val) {if(root == NULL) {TreeNode* node = new TreeNode(val);root = node;return;}if(root->val > val) {insert(root->left, val);}if(root->val < val) {insert(root->right, val);}}TreeNode* insertIntoBST(TreeNode* root, int val) {insert(root, val);return root;   }
};

题目3:450. 删除二叉搜索树中的节点 - 力扣(LeetCode)

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

相关文章:

  • 触摸芯片在物联网和人工智能上的应用
  • udp协议下的socket函数
  • 将Firefox插件导入Edge/Chrome中
  • Redis客户端界面工具QuickRedis
  • 6_1 Linux 用户管理
  • Cohere reranker 一致的排序器
  • 【论文复现|智能算法改进】基于改进鲸鱼优化算法的移动机器人多目标点路径规划
  • 1.Vue2使用ElementUI-初识及环境搭建
  • ViewModel、Lifecycles、LiveData基本使用
  • TK防关联引流系统:全球多账号运营,一“键”掌控!
  • Typora 破解、激活!亲测有效!2024 最新激活方法
  • 排序-快排算法对数组进行排序
  • 6-11 函数题:某范围中的最小值
  • 源代码防泄密经验分享之安全上网篇
  • 联邦学习的基本流程,联邦学习权重聚合,联邦学习权重更新
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • Brief introduction of how to 'Call, Apply and Bind'
  • ES6系列(二)变量的解构赋值
  • ESLint简单操作
  • HashMap剖析之内部结构
  • Javascript弹出层-初探
  • Java教程_软件开发基础
  • Laravel 实践之路: 数据库迁移与数据填充
  • laravel5.5 视图共享数据
  • mac修复ab及siege安装
  • pdf文件如何在线转换为jpg图片
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • TypeScript迭代器
  • webgl (原生)基础入门指南【一】
  • 编写高质量JavaScript代码之并发
  • 经典排序算法及其 Java 实现
  • 开发基于以太坊智能合约的DApp
  • 王永庆:技术创新改变教育未来
  • 微信小程序:实现悬浮返回和分享按钮
  • 用jquery写贪吃蛇
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • AI算硅基生命吗,为什么?
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • # 数论-逆元
  • #if #elif #endif
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • (¥1011)-(一千零一拾一元整)输出
  • (10)ATF MMU转换表
  • (26)4.7 字符函数和字符串函数
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (70min)字节暑假实习二面(已挂)
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (js)循环条件满足时终止循环
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • .chm格式文件如何阅读
  • .net 调用php,php 调用.net com组件 --
  • .Net 应用中使用dot trace进行性能诊断
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • @拔赤:Web前端开发十日谈