输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。如给定二叉树 [3,9,20,null,null,15,7],返回深度为3。
要计算二叉树的深度,从根节点出发,则深度的最大值为左子树的深度加1和右子树深度加1的最大值。因此,采用递归方法来做。假设函数f(node),表示的是根节点为node树的最大深度,则f(head) = Math.min(f(head.left),f(head.right))+1。实现代码如下:
package learnproject.offer;
/*
* 55.二叉树的深度
*/
public class Demo55 {
public int maxDepth(TreeNode root) {
if(root == null) {
return 0;
}
return Math.max(maxDepth(root.left)+1, maxDepth(root.right)+1);
}
public static void main(String args[]) {
Demo55 demo = new Demo55();
TreeNode node1 = new TreeNode(3);
TreeNode node21 = new TreeNode(9);
TreeNode node22 = new TreeNode(20);
TreeNode node31 = new TreeNode(15);
TreeNode node32 = new TreeNode(7);
node1.left = node21;
node1.right = node22;
node22.left = node31;
node22.right = node32;
System.out.println(demo.maxDepth(node1));
}
}