剑指Offer55-I.二叉树的深度
写在前面,小白从零刷题,在解答会写出思路,正确答案,以及所有使用到的语法和知识点
1.迭代
- BFS 层序遍历
class Solution {
public:
int maxDepth(TreeNode* root) {
queue<TreeNode*>q;
int n=q.size(),depth=0;
if(root==NULL)return NULL;
q.push(root);
while(q.size()!=0){
int n=q.size();
while(n--){
TreeNode*a=q.front();
q.pop();
if(a->left) q.push(a->left);
if(a->right) q.push(a->right);
}
++depth;
}
return depth;
}
};
2.递归 1
- 递归气死我了,
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root==NULL) return 0;//截止条件
int l=maxDepth(root->left)+1;
int r=maxDepth(root->right)+1;//归?考虑中间的步骤,函数返回的是什么?
return l>r?l:r;
}
};
知识点及反思
时间复杂度/空间复杂度分析/面试场景如何作答
方法一的
- 时间复杂度:O(n)
- 空间复杂度: 空间复杂度为O(1)