Maximum Depth of Binary Tree
Description
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.
解决方法
public class MaxDepthBinaryTree {
public static void main(String[] args) {
TreeNode r0 = new TreeNode(11);
TreeNode r11 = new TreeNode(1);
TreeNode r12 = new TreeNode(11);
TreeNode r21 = new TreeNode(11);
TreeNode r31 = new TreeNode(11);
r0.left = r11;
r0.right = r12;
r11.left = r21;
r21.left = r31;
System.out.println(maxDepth(r0));
System.out.println(maxDepth(r31));
System.out.println(maxDepth(r11));
System.out.println(maxDepth(r12));
System.out.println(maxDepth(r21));
}
public static int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
if (root.left == null && root.right == null) {
return 1;
}
int leftDepth = -1;
int rightDepth = -1;
if (root.left != null) {
leftDepth = maxDepth(root.left)+1;
}
if (root.right != null) {
rightDepth = maxDepth(root.right)+1;
}
if (leftDepth > rightDepth) {
return leftDepth ;
} else {
return rightDepth ;
}
}
}
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
}
}
Note
int leftDepth = -1;
int rightDepth = -1;
leftDepth 和 rightDepth 的取值 并不重要,取 <= 0 都可以因为有 if 判断
最末端的节点 左子树 和右子树 都是null, 返回值都是 1
总结
空树到深度为0
只有一个节点的树,其深度为1
改进
public class Solution {
public int maxDepth(TreeNode root) {
if (root == null) {
return 0;
}
// if (root.left == null && root.right == null) {
// return 0;
// }
int leftDepth = 0;
int rightDepth = 0;
if (root.left != null) {
leftDepth = maxDepth(root.left);
}
if (root.right != null) {
rightDepth = maxDepth(root.right);
}
if (leftDepth > rightDepth) {
return leftDepth +1;
} else {
return rightDepth +1;
}
}
}
**把 + 1 移到 返回值 里面
去掉 if 判断
int leftDepth = 0;
int rightDepth = 0;返回值+1, 最底部的节点 返回 1