Java语言描述二叉树的深度和宽度
时间:2019-04-10
本文章向大家介绍Java语言描述二叉树的深度和宽度,主要包括Java语言描述二叉树的深度和宽度使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
解释:
二叉树的深度:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
二叉树的宽度:二叉树的每一层中都有一定数量的节点,节点数最多的那一层的节点数叫做二叉树的宽度。
思路:递归实现。
1.每个节点都可以看作根节点
2.根节点(任意一个节点)的深度等于它的左子树或右子树深度最大值+1
3.从根结点开始遍历,若遍历到叶子节点,深度为0
//二叉树的深度 public static int Depth(node root){ if(root == null){ return 0; } int dl = Depth(root.leftchild); int dr = Depth(root.rightchild); return dl>dr? dl+1:dr+1; }
二、二叉树的宽度
思路:层序遍历时添加一个计数器,记录每层的节点数
1.每层出队列时记录下一层的节点数,其实就是队列的Size()
2.每层遍历结束时,比较最大宽度与当前层节点数,记录最大值
public static int Width(node root) { if(root == null) return 0; Queue<node> q = new LinkedList<node>(); q.add(root); int width = 1; //最大宽度 int len = 1; //当前层节点数 while(q.size()>0){ while(len-->0){ node node = q.poll(); if(node.leftchild != null){ q.add(node.leftchild); } if(node.rightchild != null){ q.add(node.rightchild); } } len = q.size(); //每层循环结束后记录下一层的节点数 width = width>q.size() ? width : q.size(); } return width; }
总结
以上就是本文关于Java语言描述二叉树的深度和宽度的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
- 关于权限设置的一个小把戏(r2第27天)
- R语言实现混合模型
- 数据迁移判断非空约束(r2笔记45天)
- 【专业技术】linux下socket编程
- oracle并行的小细节(r2笔记44天)
- python实现朴素贝叶斯模型:文本分类+垃圾邮件分类
- 使用闪回查询备份数据(r2笔记43天)
- 生产环境sql语句调优实战第四篇(r2笔记41天)
- 生产环境sql语句调优实战第五篇(r2笔记41天)
- python实现逻辑logistic回归:预测病马的死亡率
- 开发 | 图片数据集太少?看我七十二变,Keras Image Data Augmentation 各参数详解
- linux过滤空文件的命令总结(r2笔记40天)
- shell脚本自动化采集性能sql(r2笔记39天)
- R语言与点估计学习笔记(EM算法与Bootstrap法)
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- 详解pyinstaller生成exe的闪退问题解决方案
- PHP递归算法的简单实例
- Yii2框架操作数据库的方法分析【以mysql为例】
- 使用OpenCV实现道路车辆计数的使用方法
- python中tab键是什么意思
- PHP实时统计中文字数和区别
- PHP单例模式实例分析【防继承,防克隆操作】
- Python基于network模块制作电影人物关系图
- tp5(thinkPHP5框架)使用DB实现批量删除功能示例
- 统计PHP目录中的文件数方法
- python json.dumps() json.dump()的区别详解
- Win10下用Anaconda安装TensorFlow(图文教程)
- TP5(thinkPHP框架)实现后台清除缓存功能示例
- PHP递归的三种常用方式
- python实现xlwt xlrd 指定条件给excel行添加颜色