数据结构与算法分析笔记与总结(java实现)--二叉树11:二叉树的深度
来源:互联网 发布:数据库一体机 编辑:程序博客网 时间:2024/06/02 09:08
题目:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
思路:所谓的深度是指从根结点到叶子结点的最长的路径的长度,即路径上的结点的数目。分析问题,输入根结点root,求它的深度需要先求出root左右子树的深度,取其较大值,然后加1就是当前树的深度了,即显然这是一个对二叉树后序遍历进行改编的递归过程,设计一个递归函数,输入个结点root,返回这个根结所在的树的深度。
递推关系是:
leftDepth=this.process(root.left);
rightDepth=this.process(root.right);
returnMath.max(leftDepth, rightDepth)+1;
边界条件:
If(root==null)return 0;
即对于空子树结点,显然它的深度是已知的,为0,最为边界条件或者初始条件。
这是一个基本的递归函数构造过程,很简单,只有一个返回值。
//求深度,先求左右子树的深度,再求当前树的深度。对后序遍历的递归过程进行改造即可
publicclass Solution {
public int TreeDepth(TreeNode root) {
//特殊输入
if(root==null) return 0;
//调用递归函数解决问题
return this.process(root);
}
//设计一个递归函数用来求出一棵二叉树的深度
private int process(TreeNode root){
//递归函数的边界条件
if(root==null) return 0;
//①求左子树的深度
int leftDepth=this.process(root.left);
//②求右子树的深度
int rightDepth=this.process(root.right);
//③处理当前结点,求当前树的深度
intdepth=Math.max(leftDepth,rightDepth)+1;
//返回结果
return depth;
}
}- 数据结构与算法分析笔记与总结(java实现)--二叉树11:二叉树的深度
- 数据结构与算法分析笔记与总结(java实现)--二叉树15:对称的二叉树
- 数据结构与算法分析笔记与总结(java实现)--二叉树13:平衡二叉树
- 数据结构与算法分析笔记与总结(java实现)--二叉树24:重建二叉树
- 数据结构与算法分析笔记与总结(java实现)--二叉树25:序列化二叉树
- 数据结构与算法分析笔记与总结(java实现)--二叉树23:树的子结构
- 数据结构与算法分析笔记与总结(java实现)--二叉树1:递归二叉树的序列打印练习题
- 数据结构与算法分析笔记与总结(java实现)--二叉树2:非递归二叉树的序列打印练习题
- 数据结构与算法分析笔记与总结(java实现)--二叉树12:二叉树的镜像
- 数据结构与算法分析笔记与总结(java实现)--二叉树18:二叉树的下一个结点
- 数据结构与算法分析笔记与总结(java实现)--二叉树20:二叉搜索树的后序遍历序列
- 数据结构与算法分析笔记与总结(java实现)--二叉树21:二叉搜索树的第k个结点
- 数据结构与算法分析笔记与总结(java实现)--二叉树笔记
- 数据结构与算法分析笔记与总结(java实现)--二叉树22:二叉搜索树与双向链表
- 数据结构与算法分析笔记与总结(java实现)--二叉树7:折纸练习题
- 数据结构与算法分析笔记与总结(java实现)--二叉树8:寻找错误结点练习题
- 数据结构与算法分析笔记与总结(java实现)--二叉树9:树上最远距离练习题
- 数据结构与算法分析笔记与总结(java实现)--二叉树5:平衡二叉树判断练习题
- 菱形虚拟继承的深入剖析
- InputStream.read()阻塞
- bug产生的原因
- 深入浅出parallelStream
- Appium遇到的一些问题
- 数据结构与算法分析笔记与总结(java实现)--二叉树11:二叉树的深度
- 项目中用到的省市县的选择Demo
- 集成显卡 独立显卡 带 双显示器
- 第十三章 字符串
- LinkedBlockingDeque实现生产者消费者
- NavigationController
- RabbitMQ Exchange Type(Direct/Fanout/Topic)理解测试
- 数据结构与算法分析笔记与总结(java实现)--二叉树12:二叉树的镜像
- Android 安全之如何反编译与加密apk包