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

今日算法(依旧二叉树)

class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { //递归进行加回溯过程 if(rootq||rootp||rootNULL) return root; TreeNode*leftlowestCommonAncestor(root-left,p,q); TreeNode*rightlowestCommonAncestor(root-right,p,q); if(left!NULLright!NULL) return root;//在左和右返回根 if(leftNULLright!NULL) return right; else if(left!NULLrightNULL) return left; else return NULL; } };普通二叉树需要遍历全部中左右遍历思想1.分别在左和右根为祖先2.p或q为根节点直接返回p或q3.都不在左返回右4.都不在右返回左class Solution { public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) { //比二叉树少了全图遍历//直接找根节点 if(rootNULL) return root; if(root-valp-valroot-valq-val) return lowestCommonAncestor(root-left,p,q); else if(root-valp-valroot-valq-val) return lowestCommonAncestor(root-right,p,q); else return root; } };因为二叉搜索树是有序的所以直接比较大小看在左右1.都在左-》递归进行2.都在右-递归3.分别左右-》返回根class Solution { public: TreeNode* insertIntoBST(TreeNode* root, int val) { //需要保证树的平衡 if(rootnullptr) { TreeNode*nodenew TreeNode(val); return node; } if(root-valval) root-leftinsertIntoBST(root-left,val); if(root-valval) root-rightinsertIntoBST(root-right,val); return root; } };因为不用注意二叉树搜索树的性质直接插入就行比较查找不用遍历全树class Solution { public: TreeNode* deleteNode(TreeNode* root, int key) { //1.节点不存在 if(rootnullptr) return nullptr; if(root-valkey) { //2.节点左右为空 if(root-leftnullptrroot-rightnullptr) { delete root; return nullptr; } //3.节点左为空 else if(root-leftnullptr) { //保存右节点返回 TreeNode*noderoot-right; delete root; return node; } //4.右节点为空 else if(root-rightnullptr) { TreeNode*noderoot-left; delete root; return node; } //左右不为空 else { TreeNode*curroot-right; //找右的最左节点 while(cur-left) { curcur-left; } cur-leftroot-left; TreeNode*tmproot; rootroot-right; delete tmp; return root; } } if(root-valkey) root-leftdeleteNode(root-left,key); if(root-valkey) root-rightdeleteNode(root-right,key); return root; } };插入就比较麻烦需要对删除节点进行分析1.不存在返回空2.删除节点左右为空直接删除返回空3.删除节点左节点不存在直接右替代删除节点4.删除节点右节点不存在直接左替代删除节点5.删除节点左右节点都存在将删除节点的左节点放到删除节点的最左节点即可
http://www.zskr.cn/news/1313465.html

相关文章:

  • 如何用VR-Reversal将3D VR视频高效转换为普通2D格式:完整实用指南
  • 2025-2026年国内劳保鞋厂家推荐:五家排行产品专业评测解决工地施工致足部受伤 - 品牌推荐
  • ComfyUI-VideoHelperSuite:AI视频工作流的专业解决方案
  • 校招-美团大模型岗位怎么准备:别只做智能问答 Demo,高频业务系统和数据链路才是主线
  • 掌握MCP/GraphRAG/AgentDevOps/RaaS四大趋势,让你的AI Agent真正“能干活”!收藏这份工程师指南
  • NotebookLM思维导图生成正在淘汰传统XMind?一线知识工程师紧急预警的4个不可逆趋势
  • 2026年亲测必备:三大类10款免费降AI工具 高效降AI率不花一分钱 - 降AI实验室
  • 2026年第二季度,温州家长如何为孩子选择一所“硬核”九年一贯制私立初中? - 2026年企业推荐榜
  • 2026届毕业生推荐的六大AI辅助写作工具推荐
  • 63 Nginx解决跨域问题的具体实现
  • 2025-2026年国内北京定制游旅行社推荐:五家排行产品专业评测,解决深度游致体验差 - 品牌推荐
  • 告别BOM错误!手把手教你用Access搭建OrCAD CIS元器件数据库(附Excel模板)
  • 私有化包管理器chitu:从原理到实践,构建企业级软件分发体系
  • 2025-2026年全球十大游戏鼠标品牌推荐:十款排行产品专业评测解决电竞场景致延迟痛点 - 品牌推荐
  • 手把手解决:VirtualBox中Ubuntu磁盘爆满“Low Disk Space”及动态扩容全攻略
  • 基于strands-agents构建智能体工作流引擎:从原理到实践
  • 【AutoSar_UDS服务】0x31服务_例程控制:从协议解析到复杂诊断场景实战
  • 基于MCP协议构建安全AI支付工具:从原理到实践
  • Go语言秘钥管理:K8s Secret
  • MCPAQL/spec:构建多智能体强化学习标准化评估基准
  • 南通沙发翻新换皮靠谱商家推荐|匠阁沙发翻新、御匠沙发翻新、锦修沙发翻新三大品牌全解析、服务内容、覆盖区域与联系方式 - 卓信营销
  • 从零实现2048游戏:核心算法、状态管理与面向对象设计实践
  • 现代前端工程化实践:ESLint、Prettier与Git Hooks自动化配置指南
  • 5分钟掌握SECS4Net:.NET开发者的半导体设备通信终极指南
  • 2025-2026年璀璨时代楼盘电话查询:购房前请核实预售许可与合同条款 - 品牌推荐
  • Laravel集成GPT:AI赋能PHP开发,提升效率与智能化水平
  • 2025-2026年中国流量仪表厂家排名榜推荐:十大专业评测高温蒸汽防误差累积案例 - 品牌推荐
  • 2026年5月十大游戏鼠标品牌推荐:十大排名产品评测夜战防手疲劳 - 品牌推荐
  • Linux后台任务脱离自动化巡检实践
  • 告别踩坑:在Win2008 R2用MySQL 8.0建站,从安装到连接测试的完整配置流程