给定一个二叉树,找出其最大深度。
https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例1:
Java解法
package sj.shimmer.algorithm.m3_2021;
import sj.shimmer.algorithm.TreeNode;
/**
* Created by SJ on 2021/3/20.
*/
class D54 {
public static void main(String[] args) {
System.out.println(maxDepth(TreeNode.getInstance(new Integer[]{3, 9, 20, null, null, 15, 7})));
}
public static int maxDepth(TreeNode root) {
return maxDepth(0, root);
}
public static int maxDepth(int index,TreeNode node) {
if (node == null) {
return index;
}
return Math.max(maxDepth(index+1, node.left), maxDepth(index+1, node.right));
}
}
官方解
-
深度优先搜索
- 时间复杂度:O(n)
- 空间复杂度:O(height) 递归深度
-
广度优先搜索