当前位置: 首页 > 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中。

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

相关文章:

  • springboot war包tomcat中运行报错,启动过滤器异常,一个或多个筛选器启动失败。
  • 关于Python:7. Python数据库操作
  • 经典算法 求解硬币组成问题
  • 基于大模型的肾结石诊疗全流程风险预测与方案制定研究报告
  • 软件测评如何保障质量与提升体验?从五方面详细说说
  • JSON 处理笔记
  • 接上篇,解决FramePack启动报错:“httpx.ReadError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。“的问题
  • 在c++中,char定义的变量取地址时,为什么会输出 “烫烫烫...“?
  • 【在Spring Boot中集成Redis】
  • LeetCode - 1137.第N个泰波那契数
  • 学习黑客色即是空
  • python使用cv2在图片上标点
  • 二、shell脚本--变量与数据类型
  • c++_2011 NOIP 普及组 (1)
  • WebSocket分布式实现方案
  • 【LLaMA-Factory实战】1.3命令行深度操作:YAML配置与多GPU训练全解析
  • 数据库 1.0
  • wpf CommandParameter 传递MouseWheelEventArgs参数 ,用 MvvmLight 实现
  • 里氏替换原则(LSP)
  • Java 网络安全新技术:构建面向未来的防御体系
  • 俄乌互相空袭、莫斯科机场关闭,外交部:当务之急是避免局势紧张升级
  • 吴清:全力支持中央汇金公司发挥好类“平准基金”作用
  • 青年与城市共成长,第六届上海创新创业青年50人论坛将举办
  • 综合治理食品添加剂滥用问题,国务院食安办等六部门联合出手
  • 无人机穿越大理崇圣寺千年古塔时“炸机”,当地:肇事者已找到,将被追责
  • 印巴矛盾已达近年“最高点”:军政经文全面紧张,巴将向联合国通报局势