仅学习记录
算法思路:
遍历二叉树左右子树两个固定套路:递归和迭代
本题多一个变量计数即可。
*/
深度优先:递归左右子树并计数,取层数最大值为结果*/
class Solution{
public:
int maxDepth(TreeNode* root){
if(root==nullptr) return 0;
return max(maxDepth(root->left),maxDepth(root->right)) + 1;
}
};
/
或广度优先/层序遍历(迭代):
class Solution {
public:
int maxDepth(TreeNode* root) {
if(root==nullptr) return 0;//不要忘记处理极端情况,否则下面有空指针。
int max=0;
queue<TreeNode*> que;
que.push(root);//先将根结点存入队列,队列初始长度为1即第一层只有一个结点
while(!que.empty()){
//记录每一层结点个数
int size=que.size();
for(int i=0;i<size;i++){
//遍历下层所有结点存入队列中,队列元素个数即为该层结点数。
TreeNode* node=que.front();
if(node->left)que.push(node->left);
if(node->right)que.push(node->right);
que.pop();
}
//每层结束层数+1
max++;
}
return max;
}
};
*/