求二叉树最长路径长度和
1.题目:
求任意一颗二叉树最长路径长度
样例:如下所示
图一树的最长路径长度为4,图二的最长路径长度为7,图一最长路径经过根节点,顶点为1,图二不经过,顶点为3
2.思路
树中任意两个节点之间,连接起来的路径最长。方法就是求出每个节点的左子树和右子树的高度,两者相加就是当前节点的最长路径,然后比较每个节点的最长路径,最大的就是结果
3.实现方法
定义一个静态变量MaxLength记录每一步最大长度,采取前序遍历来遍历每一个节点,在遍历过程中,对当前节点的最长路径进行比较,对于每一个节点最长路径求法,先求出它左子树和右子树的高度(节点数最多的路径),然后相加即为当前节点最长路径
代码如下:
static Integer MaxLength=0;//记录最长路径
//遍历整棵树,得到最长路径
public void getLength(TreeNode t){if(t!=null){MaxLength=Math.max(LengthTree(t),MaxLength);getLength(t.lchild);getLength(t.rchild);}
}
//得到当前节点的最长路径
public int LengthTree(TreeNode t){if (t==null)return 0;int left=heighTree(t.lchild);int right=heighTree(t.rchild);int CurMax=left+right;return CurMax;
}
//求二叉树最大高度
public int heighTree(TreeNode t){if (t==null)return 0;elsereturn Math.max(heighTree(t.lchild),heighTree(t.rchild))+1;
}
4.结果
图一树最长路径
图二最长路径结果
求二叉树最长路径长度和相关推荐
- C语言实现二叉树前序中序后序递归与非递归遍历、层次遍历、二叉树带权路径长度
用C语言实现了二叉树的初始化,循环队列与顺序栈的建立. 利用递归与非递归方式实现前序遍历.中序遍历.后序遍历. 利用队列实现了层次遍历. 求得了二叉树带权路径长度 #include<stdio. ...
- 二叉树-求第一条最长路径长度并输出路径
求第一条最长路径长度并输出路径 算法思想 利用递归遍历思想,先求出二叉树最长路径也就是当前树的高度 再调用求路径长度的函数判断指针走向输出路径 int LongestPath(BiTree *T){ ...
- 求二叉树中的第一条最长路径长度,并输出最长路径上的节点
#include <stdio.h> #define MaxSize 1000typedef struct BiTNode {int data;struct BiTNode *lchild ...
- 在二叉树中找到累加和为指定值的最长路径长度
在二叉树中找到累加和为指定值的最长路径长度 给定一棵二叉树的头节点 head 和一个 32 位整数 sum,二叉树节点值类型为整型,求累加和为 sum 的最长路径长度.路径是指从某个节点往下,每次最多 ...
- 左神算法:在二叉树中找到累加和为指定值的最长路径长度(Java版)
本题来自左神<程序员代码面试指南>"在二叉树中找到累加和为指定值的最长路径长度"题目. 题目 给定一棵二叉树的头节点 head 和一个 32 位整数 sum,二叉树节点 ...
- 3006基于二叉链表的二叉树最长路径的求解(附思路)
描述 设二叉树中每个结点的元素均为一个字符,按先序遍历的顺序建立二叉链表,编写算法求出该二叉树中第一条最长的路径. 输入 多组数据.每组数据一行,为二叉树的先序序列(序列中元素为'0'时,表示该结点为 ...
- php 实现二叉树的最大深度_Java如何实现求二叉树的最大深度(附代码)
本篇文章给大家带来的内容是关于Java如何实现求二叉树的最大深度(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远 ...
- 求二叉树中从根结点到叶子结点的路径
/** * 实验题目: * 求二叉树中从根结点到叶子结点的路径 * 实验目的: * 掌握二叉树遍历算法的应用,熟练使用先序.中序.后序3种递归 * 和非递 ...
- 2021-10-09 求二叉树的高度(递归和迭代版本)
剑指 Offer 55 - I. 二叉树的深度 输入一棵二叉树的根节点,求该树的深度.从根节点到叶节点依次经过的节点(含根.叶节点)形成树的一条路径,最长路径的长度为树的深度. 和题解写的一比,我写的 ...
最新文章
- CloudStack设计思想
- web应用如何确定能同时允许多少用户连接?_Web测试环境搭建+测试要点汇总
- 什么是分镜头剧本?(分镜头剧本是将文字转换成立体视听形象的中间媒介。主要任务是根据解说词和电视文学脚本来设计相应画面,配置音乐音响,把握片子的节奏和风格等。)
- IT互联网公司的笔试的输入输出- c++ python
- JVM笔记(一)数字在JVM中的表示
- 美女视频主持 页面右下角弹窗美女介绍
- 关于office2016和visio2016无法共存的问题
- Python压缩图片到指定大小
- 一种考虑时空关联的深度学习短时交通流预测方法
- (总结归纳)常用电子元件,封装,库
- xp系统计算机怎么设置权限设置,xp系统共享权限如何设置|xp系统共享权限设置方法...
- java汉字字符串转拼音
- rman归档日志备份到磁盘并恢复的测试
- NOIP 2014 primeの酱油记+题解
- AI基础:入门人工智能必看的论文
- 转 Android屏幕适配全攻略(最权威的官方适配指导)
- Modeling Personalized Item Frequency Information for Next-basket Recommendation
- Wireshark修改数据包
- 划分春夏秋冬四季的气象学标准
- 2014全国专业技术人员计算机应用能力考试科目,全国专业技术人员计算机应用能力考试模块(2014)...
热门文章
- apache 编译支持php_apache2 不支持php文件 解决办法(示例代码)
- Android 蓝牙4.0(BLE)开发实现对蓝牙的写入数据和读取数据
- 七十七、React中的propTypes,defaultProps和生命周期函数
- 期末复习、化学反应工程科目(第二章)
- R 语言聚类关联规则
- 从近年顶会论文看领域自适应(Domain Adaptation)最新研究进展
- 深度学习开发者的AI Party来了!WAVE SUMMIT+2021与你相约双十二
- 用最简单的方式训练史上最强ResNet-50,性能超过魔改结构的ResNeSt
- 浅谈零样本网络表示学习
- 周志华《机器学习》西瓜书出全新视频课啦!