zlatan的算法笔记13.6--二叉树的最大深度【层序遍历】(力扣104题)

算法笔记

本题求二叉树的最大深度是二叉树中十分常见的一类题目,使用递归,迭代和层序遍历都可以实现,这里使用的为层序遍历。

题目描述

在这里插入图片描述

解题思路

二叉树的深度一般被认为是从根节点到叶子节点的长度,是自上而下的,二叉树的高度则是从下往上去数,注意区分。对于层序遍历来说,每一个for循环代表对于二叉树的一层进行遍历,那么只需要在这一层遍历时定义一个depth就可以记录最大的深度了,每遍历完一层深度就加一。

代码部分

class Solution {
public:
    int maxDepth(TreeNode* root) {
        queue<TreeNode*> que;
        int depth = 0;        
        if(root != nullptr) {
            que.push(root);
        }
        while(!que.empty()) {
            int size = que.size();
            depth++;
            for(int i = 0; i < size; i++) {
                TreeNode* node = que.front();
                que.pop();
                if(node -> left) {
                    que.push(node -> left);
                }
                if(node -> right) {
                    que.push(node -> right);
                }
            }
        }
        return depth;
    }
};

结语

这道题目的是二叉树当中必须要掌握的,只要理解了逻辑就可以轻松解题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值