给你一个有根节点的二叉树,找到它最深的叶节点的最近公共祖先。

回想一下:

叶节点 是二叉树中没有子节点的节点
树的根节点的 深度 为 0,如果某一节点的深度为 d,那它的子节点的深度就是 d+1
如果我们假定 A 是一组节点 S 的 最近公共祖先,S 中的每个节点都在以 A 为根节点的子树中,且 A 的深度达到此条件下可能的最大值。

示例 1:

输入:root = [1,2,3]
输出:[1,2,3]
解释:
最深的叶子是值为 2 和 3 的节点。
这些叶子的最近共同祖先是值为 1 的节点。
返回的答案为序列化的 TreeNode 对象(不是数组)"[1,2,3]" 。

代码

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {int maxLen=Integer.MIN_VALUE;TreeNode maxRoot;public TreeNode lcaDeepestLeaves(TreeNode root) {po(root,0);return maxRoot;}public int  po(TreeNode root,int level) {if(root==null) return level;//返回深度int l=po(root.left,level+1);int r=po(root.right,level+1);if(l==r&&l>=maxLen) {//如果左右子树都存在相等的最深叶子节点maxLen=l;maxRoot=root;}return Math.max(l,r);//返回最深叶子节点的高度}
}

leetcode1123. 最深叶节点的最近公共祖先(dfs)相关推荐

  1. LeetCode 1123. 最深叶节点的最近公共祖先(递归比较子树高度)

    1. 题目 给你一个有根节点的二叉树,找到它最深的叶节点的最近公共祖先. 回想一下: 叶节点 是二叉树中没有子节点的节点 树的根节点的 深度 为 0,如果某一节点的深度为 d,那它的子节点的深度就是 ...

  2. 二叉树如何求两个叶节点的最近公共祖先--re

    二叉搜索树原理: 二叉搜索树是排序过的 ,位于左子树的结点都比父结点小,位于右子树的结点都比父结点大,我们只需从根节点开始和两个输入的结点进行比较,如果当前节点的值比两个结点的值都大,那么最低的公共祖 ...

  3. 二叉树——求两个节点的最近公共祖先

    题目 给定一颗二叉树的头结点,和这颗二叉树中2个节点n1和n2,求这两个节点的最近公共祖先: 思路 利用后序遍历实现: 对于当前节点cur,如果节点为null或者等于n1或n2中的一个,则直接返回cu ...

  4. 两节点的最小公共祖先LCA

    一.二叉搜索树中两节点的最小公共祖先: 最初级的题目,在一颗二叉搜索树中寻找两节点的最小公共祖先.根据二叉搜索树的特征,从根节点开始查找,若两节点的val值都小于当前节点,则他们的最小公共祖先就去左子 ...

  5. 牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案

    牛客题霸 [ 在二叉树中找到两个节点的最近公共祖先] C++题解/答案 题目描述 给定一棵二叉树以及这棵树上的两个节点 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 题解: 我们想想最 ...

  6. 在二叉树中找到两个节点的最近公共祖先(C++)

    在二叉树中找到两个节点的最近公共祖先 描述   给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1 和 o2,请找到 o1 和 o2 的最近公共祖先节点. 数据范围:树上节点数满足1 ...

  7. 数据结构-寻找二叉树两节点的最近公共祖先(Java)

    寻找最近公共祖先 题目 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表示为一个节点 x,满足 ...

  8. 由浅入深:求给定两个树节点的最低公共祖先(二叉树、普通树结构)JAVA实现

    最近看了一道面试题目,觉得很有意思,而且常常被问到,今天综合归纳了一下这道题目,并给出了各种变形题目,附上JAVA版的程序解答. 题目是这样的:寻找二叉树的最低公共祖先?(其中隐含着一个盲点:树是什么 ...

  9. 2022-05-22:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p

    2022-05-22:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先. 百度百科中最近公共祖先的定义为:"对于有根树 T 的两个节点 p.q,最近公共祖先表示为一个节点 x,满足 x ...

最新文章

  1. 硅片行业:过剩背景下的寡头市场
  2. linux学习笔记 第七篇 (samba(一))(iscsi)
  3. 【Android 异步操作】线程池 ( 线程池使用示例 | 自定义线程池使用流程 | 自定义任务拒绝处理策略 | 完整代码示例 )
  4. 基于Salmon的转录组定量流程
  5. HBase+Phoenix整合入门--集群搭建
  6. 【转】ASPX和HTML获取系统根目录的路径
  7. python代码导出_代码生成 – Python生成Python
  8. oracle状态blocked,oracle 监听状态为BLOCKED
  9. python有趣的案例_Python有趣的小案例
  10. 使用C#开发ActiveX控件
  11. 翘首以盼Windows 8
  12. 语法高亮_Qt官方示例语法高亮器
  13. 微信小程序Axure元件库(2021最新版)
  14. BCDboot.exe
  15. selenium下载图片
  16. Python:快速裁剪PDF页面
  17. Vue.js:事件修饰符stop,once,prevent的使用
  18. android 开机自动启动服务,Android实现开机自动启动Service或app的方法
  19. 【每日英文】2021.8.5
  20. PDF转JPG免费软件有什么?这三个软件值得收藏

热门文章

  1. 1088 三人行 (20 分)
  2. libevent学习笔记 一、基础知识
  3. truncate、rename函数的使用
  4. chmod、chown函数的使用
  5. 这些新技术你们都知道吗?看这一篇就够了!
  6. leetcode中文版python_Python版LeetCode1.两数之和
  7. 七、 面向对象(二)
  8. 2639-Bone Collector II (01背包之第k优解)
  9. Android第三夜
  10. poj2975——Caesar密码