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

二叉树最近公共祖先(后序遍历,回溯算法)

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

class Solution {
public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {if(root==p||root==q||root==NULL){return root;}TreeNode*left=lowestCommonAncestor(root->left,p,q);TreeNode*right=lowestCommonAncestor(root->right,p,q);if(left==NULL&&right!=NULL){return right;}else if(left!=NULL&&right==NULL){return left;}else if(left==NULL&&right==NULL){return NULL;}else{return root;}}
};

要想找二叉树的最近公共祖先,要从叶子节点开始遍历,最后返回给根节点,所以采用后序遍历的方法实现。

判断符合题意条件:在遍历到的节点时,此节点与目标节点相同时,则返回节点给根节点,如果为空,则返回空。

单层递归逻辑:递归遍历节点的左右子节点,储存在left和right中。

回溯逻辑:如果节点的左节点为空但右节点不为空,则返回右节点给根节点;如果节点的右节点为空但左节点不为空,则返回左节点给根节点。如果左右都为空,则将空传入根节点。如果左右都不为空,根节点不变,也就是将根节点返回给根节点,等待下一次循环对根节点的判断。

http://www.xdnf.cn/news/270019.html

相关文章:

  • 强化学习--4.策略梯度方法(蒙特卡罗)
  • 数字信号处理学习笔记--Chapter 0 数字信号处理概述
  • Python 部分内置函数及其用法详解
  • HTML打印设置成白色,但是打印出来的是灰色的解决方案
  • mcp+llm+rag
  • 隐藏元素的多种方式
  • TFT(薄膜晶体管)和LCD(液晶显示器)区别
  • zabbix 重置登录密码
  • 【文献阅读】全球干旱地区植被突变的普遍性和驱动因素
  • 陶瓷陶器缺陷检测VOC+YOLO格式938张2类别
  • 时间交织(TIADC)的失配误差校正处理(以4片1GSPS采样率的12bitADC交织为例讲解)
  • 64常用控件_多元素控件介绍
  • Linux中进程的属性:进程优先级
  • MySQL 分库分表
  • C++ 中 virtual 的作用
  • 基于 vue-flow 实现可视化流程图
  • 第7章 【Python数据类型大爆炸】Python 基础语法和数据类型特性的实例
  • “c++11“,右值,右值引用,可变参数模板...
  • GPU集群监控系统开发实录:基于Prometheus+Grafana的算力利用率可视化方案
  • 第15章 对API的身份验证和授权
  • 论系统安全架构设计及其应用
  • 【KWDB 创作者计划】使用Docker实现KWDB数据库的快速部署与配置
  • vLLM 本地部署Qwen大模型
  • ES6语法
  • 【大模型面试每日一题】Day 7:为什么大模型训练选择 Adam 而非 SGD?Adam 的关键改进是什么?
  • 被低估的AI+数据标注
  • DeepSeek辅助学术写作之修订与校稿以及发表与推广相关提示词分享祝你顺利毕业~
  • 介绍最前沿的人工智能创新,‘无反向传播’神经网络训练方法?
  • 53、【OS】【Nuttx】编码规范解读(一)
  • [蓝桥杯真题题目及解析]2025年C++b组