当前位置: 首页 > 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祖先的情况。则要将递归遍历到的值返回给上一层。最后如果找到中间值点,则将遍历到的节点返回给上一层。

相关文章:

  • 《工业社会的诞生》章节
  • 信息系统监理师第二版教材模拟题第二组(含解析)
  • 【锂电池剩余寿命预测】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 第七章(导航)
  • 禅定佛的微笑,从樊锦诗提到过的那尊说起
  • 中南财经政法大学法学院党委副书记易育去世,终年45岁
  • 专访|刘伟强:在《水饺皇后》里,我放进儿时全家福照片
  • 解放军报八一锐评:青春无限好,奋斗正当时
  • 中国驻日本大使吴江浩就日本民用飞机侵闯我钓鱼岛领空向日方提出严正交涉
  • “五一”前两日湖北20多家景区实施限流