104. 二叉树的最大深度
问题描述
给定一个二叉树 root ,返回其最大深度。
二叉树的最大深度是指从根节点到最远叶子节点的最长路径上的节点数。
可以使用dfs和bfs两种方法针对树的层数进行遍历,并记录。
递归方法
可以用递归解决,比较简单,用递归函数的返回值承载答案,x表示从当前层到最深层的深度。
class Solution {
public:
int solve(TreeNode* root) {
int x = 0;
if (root == nullptr) {
return x;
}
x++;
int l_deep = solve(root->left)+x;
int r_deep = solve(root->right)+x;
return max(l_deep, r_deep);
}
int maxDepth(TreeNode* root) {
int res = solve(root);
return res;
}
};
bfs方法
重点是使用队列时,要判断到哪个结点是树一个层的结束,从而使得层数+1。
可以根据队列中结点数量,使用for循环控制。
class Solution {
public:
int maxDepth(TreeNode* root) {
int res = 0;
queue<TreeNode*> q;
if (root != nullptr) {
q.push(root);
}
while(!q.empty()) {
int layer_size = q.size();
res++;
for (int i = 0; i < layer_size; i++) {
TreeNode* t = q.front();
q.pop();
if (t->left != nullptr) {q.push(t->left);}
if (t->right != nullptr) {q.push(t->right);}
}
}
return res;
}
};
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步