题目详述
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
解法一
递归。时间复杂度: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;
}
}