博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode#递归#1123最深节点的最近祖先
阅读量:3952 次
发布时间:2019-05-24

本文共 1429 字,大约阅读时间需要 4 分钟。

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

回想一下:

叶节点 是二叉树中没有子节点的节点

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

示例 1:

输入:root = [1,2,3]

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

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-deepest-leaves
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */class Solution {
public TreeNode lcaDeepestLeaves(TreeNode root) {
return new Op(root).get(); } static class Op{
TreeNode root; int maxDepth; TreeNode pre; Op(TreeNode root) {
this.root = root; pre = root; } int depth(TreeNode root,int depth) {
maxDepth = Math.max(maxDepth,depth); if(root==null) return depth; int l = depth(root.left,depth+1); int r = depth(root.right,depth+1); int height = Math.max(l,r); if(l==r) {
if(l==maxDepth) {
pre = root; } } return height; } TreeNode get() {
depth(root,0); return pre; } }}
你可能感兴趣的文章
“需求为王”才是根本
查看>>
高效率的危害
查看>>
寻找边缘性创新
查看>>
让创意瞄准市场
查看>>
高效经理人应具有的八个重要习惯
查看>>
优秀的领导者能读懂人才
查看>>
大智若愚也是领导力
查看>>
android如何编译MTK的模拟器
查看>>
android如何添加AP中要使用的第三方JAR文件
查看>>
利用sudo命令为Ubuntu分配管理权限
查看>>
Ubuntu下几个重要apt-get命令用法与加速UBUNTU
查看>>
Ubuntu中网页各种插件安装命令
查看>>
使用tar命令备份Ubuntu系统
查看>>
ubuntu flash 文字乱码解决方案
查看>>
在ubuntu中运行exe文件
查看>>
ubuntu安装命令
查看>>
和上司沟通必备8个黄金句
查看>>
联系查看两张卡的未接电话记录
查看>>
Python 3 之多线程研究
查看>>
APP第三方登录实现步骤
查看>>