public class Solution {
/**
* @param root: The root of binary tree.
* @return: An integer.
*/
//First Version
// public int maxDepth(TreeNode root) {
// // write your code here
// if(root == null) return 0;
// int left = helper(root.left);
// int right = helper(root.right);
// return Math.max(left,right)+1;
// }
// public int helper(TreeNode root){
// if(root == null){
// return 0;
// }else {
// return Math.max(helper(root.left),helper(root.right))+1;
// }
// }
//Second Version
// public int maxDepth(TreeNode root){
// if(root==null){
// return 0;
// }
// int left = maxDepth(root.left);
// int right = maxDepth(root.right);
// return Math.max(left,right)+1;
// }
//Traverse 红色字体是关键部位
private int depth; ***这个depth是一个全局变量
public int maxDepth(TreeNode root) {
depth=0;
if(root == null){
return 0;
}
helper(root, 1);
return depth;
}
private void helper(TreeNode root, int depth_h){
if(root == null){
return;
}
if(depth_h>depth){
depth = depth_h;
}
helper(root.left, depth_h+1);
helper(root.right,depth_h +1);
}
}