给定一个二叉树,求出其最大的深度,也就是根节点到叶子节点的距离。首先想到的是用递归的方法,依次求出每一个节点的最大深度直到叶子结点。每一个节点的最大深度都是左右子树较大的深度再加当前深度1,即每次递归返回Max(left,right)+1,叶子结点也就是递归结束条件,返回0。这有点像动态规划,代码如下:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
int deep;
public int maxDepth(TreeNode root) {
if(root==null)
return 0;
int l = maxDepth(root.left)+1;
int r = maxDepth(root.right)+1;
return Math.max(l,r);
}
}