
(Java 剑指 offer)二叉树的深度
发布日期:2021-05-07 19:44:12
浏览次数:23
分类:精选文章
本文共 1061 字,大约阅读时间需要 3 分钟。
文章目录
一、题目
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
二、深度优先遍历
使用层次遍历,
(1)如果树只有一个结点,它的深度为1, (2)如果根节点只有左子树没有右子树,则深度为左子树的深度加1,只有右子树同理 (3)如果既有左子树也有右子树,则该深度就是左子树和右子树的最大值加1class Solution { public int TreeDepth(TreeNode root) { //结点为空返回0 if (root == null) { return 0; } //分别递归计算左右子树的深度 int leftDepth = TreeDepth(root.left); int rightDepth = TreeDepth(root.right); //左右子树较大者加一即为该树深度 return leftDepth > rightDepth ? (leftDepth + 1) : (rightDepth + 1); }}
三、广度优先遍历
借助队列,每次出一层,相应长度加一
import java.util.*;public class Solution { public int TreeDepth(TreeNode root) { if(root==null){ return 0; } //设置队列 Dequedeque = new LinkedList<>(); deque.add(root); //表示树的长度 int len = 0; while(!deque.isEmpty()){ //此时队列的长度,也就是一层的队列节点个数 int length = deque.size(); for(int i=0;i
四、总结
关键是对深度优先遍历和广度优先遍历的运用
BFS:中心思想就是层序遍历,一层一层遍历,借助队列实现
DFS:中心思想是递归遍历,先左子树走到头,然后在右子树
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月23日 02时46分04秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
zmq的send
2021-05-09
delete对象时会自动调用类的析构函数
2021-05-09
POD类型
2021-05-09
const与常量,傻傻分不清楚~
2021-05-09
Head First设计模式——迭代器模式
2021-05-09
MongoDB版本及存储引擎区别
2021-05-09
shell echo单行和多行文字定向写入到文件中
2021-05-09
cmp命令
2021-05-09
Linux 磁盘管理(df fu fdisk mkfs mount)
2021-05-09
jQuery的事件绑定与触发 - 学习笔记
2021-05-09
Linux上TCP的几个内核参数调优
2021-05-09
记一次讲故事机器人的开发-我有故事,让机器人来读
2021-05-09
seo 回忆录百度基本概念(一)
2021-05-09
netcore中使用session
2021-05-09
Android 开发学习进程0.25 自定义控件
2021-05-09
多媒体文件格式全解说(下)--图片
2021-05-09
淘宝WAP版小BUG分析
2021-05-09
asp.net打印网页后自动关闭网页【无需插件】
2021-05-09
【Maven】POM基本概念
2021-05-09