原题
Given a binary tree, find its maximum depth.
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
For example:
Given binary tree [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
return its depth = 3.
递归实现
用递归实现,先求其左子树的深度和右子树的深度,递归出口为当前节点为null。然后在比较左右大小,选择最大的一边的值返回。
实现和测试代码
package com.geelaro.tree;
import java.util.LinkedList;
public class BinaryTree{
/**递归方法 **/
static int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
int left = maxDepth(root.left);
int right = maxDepth(root.right);
// System.out.println("left=" + left + ", right=" + right);
return left > right ? left + 1 : right + 1;
}
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
TreeNode left = new TreeNode(2);
TreeNode right = new TreeNode(3);
TreeNode right2 = new TreeNode(4);
// 创建树
root.left = left;
root.right = right;
right.left = right2;
System.out.println("deep is " + maxDepth(root));
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int val) {
this.val = val;
}