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

二叉搜索树的最近祖先(递归遍历)

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

class Solution {
private:TreeNode*traversal(TreeNode*cur,TreeNode*p,TreeNode*q){if(cur==NULL){return NULL;}if(cur->val>p->val&&cur->val>q->val){TreeNode*left=traversal(cur->left,p,q);if(left!=NULL){return left;}}if(cur->val<p->val&&cur->val<q->val){TreeNode*right=traversal(cur->right,p,q);if(right!=NULL){return right;}}return cur;};
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {return traversal(root,p,q);}
};

终止条件:在遍历到最后时,如果还没有找到目标节点,到达空节点,则将空返回给上一层递归。

单层递归逻辑:要想找到最近祖先,就是去找第一次到达q与p中间值的节点。由于二叉搜索树的特性,如果遍历到的节点值大于q与p,则向左面遍历;如果遍历到的节点值小于q与p,则向右面遍历。如果直接向下遍历,则会一直遍历左右子树的,遍历到的节点错过成为q与p祖先的情况。则要将递归遍历到的值返回给上一层。最后如果找到中间值点,则将遍历到的节点返回给上一层。

http://www.dtcms.com/a/171259.html

相关文章:

  • 《工业社会的诞生》章节
  • 信息系统监理师第二版教材模拟题第二组(含解析)
  • 【锂电池剩余寿命预测】RF随机森林锂电池剩余寿命预测(Pytorch完整源码和数据)
  • 移动 Trae 目录到 E 盘 - 解决 C 盘空间不足问题
  • 身份认证、访问控制技术、SSO单点登录技术、特权访问管理、身份治理与管理——数据安全守护者
  • 智能合约部署之全国职业院校技能大赛“区块链技术应用”赛项—“航班延误险案例”
  • 第四节:OpenCV 基础入门-第一个 OpenCV 程序:图像读取与显示
  • HTML5实战指南:语义化标签与表单表格高级应用
  • Spring Cloud Gateway路由+断言+过滤
  • 【毕设通关】——Word交叉引用
  • process terminated with status -1073741515
  • 前端面试宝典---性能优化
  • Javase 基础加强 —— 01 异常
  • Vue 路由(Vue Router)详解:轻松实现单页应用导航
  • llfc项目分布式服务笔记
  • VSCode搭建STM32开发调试环境
  • PostgreSQL 查看索引碎片的方法
  • Git 入门指南:下载与初步认识
  • 多模态大语言模型arxiv论文略读(五十九)
  • React-router v7 第七章(导航)
  • 【leetcode100】最长递增子序列
  • 大数据实时数仓的数据质量监控解决方案
  • TS 类型别名
  • [MATLAB]通过50个MATLAB程序理解信号与系统的核心概念
  • K8S的使用(部署pod\service)+安装kubesphere图形化界面使用和操作
  • Go Web 后台管理系统项目详解
  • AI入门:Prompt提示词写法
  • Qt6 学习指南:前言+安装基本依赖
  • Prompt compress 技术探究-LLMLingua2
  • RabbitMQ-基础