1、问题描述
输入一棵二叉树,求这棵树的深度。从根节点到叶节点经过的所有节点构成一条路径(含根节点和叶节点),最长路径的长度称之为树的深度。
2、解题思路
- 边界条件:二叉树为空,或者二叉树只有根节点,返回深度为0;
- 思路1:使用递归的思想,先求出左子树的深度,再求出右子树的深度,左右子树两者深度的最大值再加上1即为该二叉树的深度。
- 拓展:本题与面试题25,求二叉树中和为某个值的路径,以及判断一个二叉树是否是平衡二叉树(左右子树的深度之差不超过1)属于同一类题目。
3、代码实现
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public int TreeDepth(TreeNode root) {
if(root == null){
return 0;
}
int height = Maxdepth(root) ;
return height;
}
public int Maxdepth(TreeNode root){
int leftheight = 0;
int rightheight = 0;
if (root.left != null){
leftheight = Maxdepth(root.left);
}
if (root.right != null){
rightheight = Maxdepth(root.right);
}
if (leftheight >= rightheight){
return leftheight + 1;
}
else{
return rightheight + 1;
}
}
}