【题目描述】
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
【思路】
(1)方法一:递归法一
①递归退出条件:root == null,即到达最后一个子树
②先循环遍历左子树,再循环遍历右子树
③输出左右子树中深度大的
(2)方法二:递归法二
①定义一个成员变量max,用于记录最大层数
②递归退出条件:root == null,即到达最后一个子树
③在辅助函数中,若root == null,说明,该结点没有子树,此时将当前层数与记录的最大层数进行比较,保留最大值,更新max
④将此时结点的左右子树分别进入递归
⑤所有递归结束,得到的max即为二叉树的深度
(3)方法三:层序遍历法
①如果是一个空树,直接返回0
②定义一个队列用于统计二叉树的层数
③在队列不为空的情况下:
每进入循环一次,二叉树的深度加一
得到队列的长度,在该范围内,删除本层元素,并将二叉树下一层元素全部入队列
队列为空,二叉树遍历结束,即完成统计二叉树的层数
④返回二叉树的深度
【代码】
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
import java.util.LinkedList;
import java.util.Queue;
public class Solution {
//方法一:递归法一
public int TreeDepth(TreeNode root) {
if (root == null) {