二叉树的深度怎么算(Java代码实现)
题目:输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。
示例:
给定二叉树
返回它的最大深度 3 。
解题思路:
我们可以使用广度优先遍历的方式,逐层遍历,每遍历一层,我们就让变量count++,最后返回count即可。
/*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val = x; }* }*/
class Solution {public int maxDepth(TreeNode root) {if(root == null) return 0;LinkedList<TreeNode> tree = new LinkedList<TreeNode>();int count = 0;tree.add(root);//判断树是否为空while(!tree.isEmpty()){//存放下一层节点的临时变量LinkedList<TreeNode> temp = new LinkedList<TreeNode>();//每遍历一层count++count++;//弹出每层的节点并遍历他们下层是否还有节点,如果有那么放到temp中for(int i = tree.size(); i > 0; i--){TreeNode node = tree.poll();if(node.left != null) temp.add(node.left);if(node.right != null) temp.add(node.right);}//让tree指向下一层节点tree = temp;}return count;}
}
力扣战绩:
当然还有更牛皮的算法。求二叉树的深度,其实就是求最长的左右子树的深度再加上根节点的1。我们利用递归的方式,一直往下遍历左右子树的节点,然后找到左右子树中深度最大的再加上1,就得到树的深度了。
class Solution {public int maxDepth(TreeNode root) {if(root == null) return 0;return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;}
}
力扣战绩:
二叉树的深度怎么算(Java代码实现)相关推荐
- 二叉树代码 java面试题_《剑指offer》面试题39 二叉树的深度(java)
摘要: 今天翻到了<剑指offer>面试题39,题目二中的解法二是在函数的参数列表中通过指针的方式进行传值,而java是没有指针的,所以函数要进行改造.然而我翻了下别人的java版本(我就 ...
- java代码实现排序二叉树
创建排序二叉树的步骤: 1.以根节点为当前节点开始搜索 2.拿新节点的值和当前节点的值比较 3.如果新节点的值更大,则以当前结点的右子节点作为新的当前节点:如果新节点的值更小,则以当前节点的左子节点作 ...
- 简单二叉树Java代码实现
二叉树 文章目录 二叉树 一.二叉树是什么? 二叉树的性质 二.二叉树简单JAVA代码实现 1.Node(节点) 2.MyTree(简单二叉树) 总结 一.二叉树是什么? 二叉树是每个结点最多有两个子 ...
- Java第20天——二叉树的深度遍历的递归实现
1 二叉树的遍历比存储.建立要简单. 所以先"手动"建立一个二叉树来玩. 2 递归算法写起来就是舒服. 前.中.后序的代码差别只有输出语句的位置. 3 不需要额外的节点类, 每棵二 ...
- 二叉树的建立和遍历程序代码(Java,C)
C语言 考虑到c语言的scanf("%c",&c)是输入后一个字符一个字符的取出这一特性,我们选择用createBiTree()方法接受输入的参数,然后直接建立.运用递归的 ...
- java编程石头剪刀布图片_石头、剪刀、布!10分钟带你打开深度学习大门,代码已开源...
原标题:石头.剪刀.布!10分钟带你打开深度学习大门,代码已开源 沉沉 发自 宇宙中心 量子位 出品 | 公众号 QbitAI 深度学习技术的不断普及,越来越多的语言可以用来进行深度学习项目的开发,即 ...
- java 二叉树的深度、平衡二叉树、二叉树的下一个结点
1. 二叉树的深度 1. 题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 2. 求解思路 可以用后序遍历,从最后一层 ...
- java 根据圆心计算圆弧上点的经纬度_【控制测量学】-高斯投影正算公式以及java代码
正算公式(将经纬度转化为坐标): java代码(附有源代码和修改后的代码): 源代码: /** * 由经纬度反算成高斯投影坐标 * * @param longitude * @param latitu ...
- 《数据结构》—— 二叉树的复制、查深度与算结点操作
二叉树的操作 一.二叉树的复制 二.计算二叉树的深度 三.计算二叉树的结点 一.二叉树的复制 已经创建好的二叉树,首先我们对它进行判空操作,再创建新的根结点 NewT,把根结点T 赋给 NewT,递归 ...
最新文章
- 【转】iOS开发-Protocol协议及委托代理(Delegate)传值
- 小米11和小米10至尊版纪念版哪个好
- 体验.NET Core使用IKVM对接Java
- java浮点型需知_java使用数字类型注意事项
- jQuery 1.11 / 2.1 beta 版发布
- JavaScript语言精粹(修订版)
- jumpserver开源堡垒机部署安装
- hdu 6108 小C的倍数问题
- 在Exchange Server 2007中修改邮件接受域
- linux下使用PulseAudio获取扬声器的音量和是否静音
- 在线 服务器 web,web服务器是什么?
- instant-ngp总结
- php 批量下载网页文件,批量下载文件(以xxx网站为例)
- html的后代选择器,CSS3后代选择器和同级选择器简介和实例_html/css_WEB-ITnose
- word如何批量更改公式字体
- springboot毕设项目会议室预约管理系统kh090(java+VUE+Mybatis+Maven+Mysql)
- 【人物专访】FreeICQ的CTO龙云飞[1001]访谈
- 在Windows Mobile手机上运行Android
- 上计算机课的日记100字,电脑课_作文100字_小学六年级作文_第一范文网
- spring+springMVC+mybatis 上篇