二叉树的深度怎么算(Java代码实现)

二叉树的深度怎么算(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 tree = new LinkedList();

int count = 0;

tree.add(root);

//判断树是否为空

while(!tree.isEmpty()){

//存放下一层节点的临时变量

LinkedList temp = new LinkedList();

//每遍历一层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;

}

}

力扣战绩:

相关推荐

专业评测:十款免费桌面日历软件哪个好用
best365怎么登

专业评测:十款免费桌面日历软件哪个好用

⏱️ 06-28 👁️ 372
加多宝工资
best365怎么登

加多宝工资

⏱️ 07-09 👁️ 8860
在 iPad 上的“备忘录”中使用手写功能
be365体育平台app

在 iPad 上的“备忘录”中使用手写功能

⏱️ 06-29 👁️ 3118
闲鱼怎么删除聊天记录内容?删掉了为什么还有?
365外勤官网下载

闲鱼怎么删除聊天记录内容?删掉了为什么还有?

⏱️ 07-18 👁️ 1240
我把Windows版iTunes重装之后一直显示无法移除先前的安装
第五家机构首只产品亮相 合资理财公司的差异化“路线图”