题目详述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
解法一
递归。时间复杂度:O(N),空间复杂度:O((N+logn)/2)
class Solution{
public int maxDepth(TreeNode root) {
if (root == null) return 0;
else {
int left_depth = maxDepth(root.left);
int right_depth = maxDepth(root.right);
return Math.max(left_depth, right_depth) + 1;
}
}
}
解法二
BFS广度优先搜索遍历。时间复杂度:O(n),空间复杂度:O(n)
class Solution {
public int maxDepth(TreeNode root) {
LinkedList<TreeNode> queue = new LinkedList<>();
if (root != null) queue.add(root);
int depth = 0;
while (!queue.isEmpty()) {
depth++;
int level_size = queue.size();
for(int i = 0; i < level_size; i++){
TreeNode current = queue.pollFirst();
if (current.left != null) queue.add(current.left);
if (current.right != null) queue.add(current.right);
}
}
return depth;
}
}
本文详细解析了LeetCode第104题“二叉树的最大深度”,提供了两种解题思路:递归解法和BFS广度优先搜索遍历。递归解法的时间复杂度为O(N),空间复杂度为O((N+logn)/2);BFS解法则拥有O(n)的时间复杂度和空间复杂度。
476

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



