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
本文介绍了一种使用深度优先遍历的方法来计算二叉树的最大深度,包括了基本概念、代码实现及优化策略。
1407

被折叠的 条评论
为什么被折叠?



