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

Leetcode236经典题目二叉树的最近公共祖先

本次为大家带来的题目是leetcode236二叉树的最近公共祖先
在这里插入图片描述
本道题的直观思路是自底向上进行寻找,如果存在的话那么向上返回,如何能够自底向上遍历呢?我们可以利用回溯进行处理,那么需要注意的是进行回溯的时候一定要使用后序遍历来操作,因为后序遍历的顺序是左、右、根,那么在根节点也就是我们进行判断的操作了。
下面说下可能存在的情况
1.如果当前节点的左和右子树都不为空,那么说明找到了公共祖先,直接返回。
2.假如节点左子树为空,右子树不为空,说明我们要继续向上返回。同理右子树为空左子树不为空也要返回。
具体的代码实现如下:

class Solution {
      public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
        //终止条件
        if(root==null) return null;
        //如果当前节点为q或p直接返回
        if(root==p||root==q) return root;
        //后序遍历
        //左
       TreeNode left = lowestCommonAncestor(root.left,p,q);
       //右
       TreeNode right = lowestCommonAncestor(root.right,p,q);
       //根
       //左右都不为空,说明存在q,p
       if(left!=null&&right!=null){
        return root;
       }else if(left!=null &&right==null){
        return left;
       }else if(right!=null&&left==null){
        return right;
       }else{
        return null;
       }

    }
}

http://www.kler.cn/a/290017.html

相关文章:

  • 基于BILSTM及其他RNN序列模型的人名分类器
  • 力扣 LeetCode 27. 移除元素(Day1:数组)
  • 微信小程序_模板与配置_day2
  • [HNCTF 2022 Week1]ret2shellcode-好久不见12
  • vue2面试题6|[2024-11-11]
  • 【缓存策略】你知道 Cache Aside(缓存旁路)这个缓存策略吗
  • CAD二次开发IFoxCAD框架系列(26)- 分段测量多段线长度和计算多边形的面积
  • CTFHub技能树-备份文件下载-网站源码
  • 一款用于分析java socket连接问题的工具
  • 【蓝桥杯青少组】第十五届省赛python(2024)
  • UE5.3 新学到的一些性能测试合计(曼巴学习笔记)
  • Unet改进10:在不同位置添加CPCA||通道先验卷积注意力机制
  • ARM内存屏障/编译屏障API(__DMB、__DSB、__ISB)用法及举例
  • 基于Spring的Uniapp自动更新实现方法
  • 一篇常见第三方库之以及详细使用示例教程
  • C++第四十五弹---深入理解包装器:提升代码复用性与安全性的利器
  • 浙大数据结构:01-复杂度3 二分查找
  • 一文读懂期权交易规则和操作方法分享
  • gitk无法打开
  • Python将两个Excel文件按相同字段合并到一起
  • gcc编译与Linux下的库
  • k8s dial tcp 10.97.0.1:443: i/o timeout
  • 帮招一名3C大佬机器视觉工程师,工作地:苏州,月薪25K-30K,30岁以下,Halcon独立开发,单休,有管理经验更佳有绩效奖
  • 飞利浦开放式耳机怎么样?飞利浦、西圣、漫步者爆火机型大对决!
  • SprinBoot+Vue宠物领养救助微信小程序的设计与实现
  • 解决firewalld启动状态下docker无法启动