【leetcode_C++_二叉树_day13】104.二叉树的最大深度&& 111.二叉树的最小深度 &&222.完全二叉树的节点个数

层序遍历的应用罢了。模板走天下。

104.二叉树的最大深度 (优先掌握递归)

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例: 给定二叉树 [3,9,20,null,null,15,7],

104. 二叉树的最大深度

返回它的最大深度 3 。

class Solution {
public:
    int maxDepth(TreeNode* root) {
        queue<TreeNode*> que;
        if(root!=NULL) que.push(root);
        int depth=0;
        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;
    }
};

111.二叉树的最小深度 (优先掌握递归)

给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明: 叶子节点是指没有子节点的节点。

示例:

给定二叉树 [3,9,20,null,null,15,7],

111.二叉树的最小深度1

返回它的最小深度 2

class Solution {
public:
    int minDepth(TreeNode* root) {
        queue<TreeNode*> que;
        int deep=0;
        if(root!=NULL) que.push(root);
        while(!que.empty())
        {
            int size=que.size();
            deep++; 
            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);
                if(node->left==NULL&&node->right==NULL) return deep;
            }                      
        }
        return deep;
    }
};

222.完全二叉树的节点个数

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

示例 1:

img

输入:root = [1,2,3,4,5,6]
输出:6

示例 2:

输入:root = []
输出:0

示例 3:

输入:root = [1]
输出:1
class Solution {
public:
    int countNodes(TreeNode* root) {
        queue<TreeNode*> que;
        int num=0;
        if(root!=NULL) que.push(root);

        while(!que.empty())
        {
            int size=que.size();
            for(int i=0;i<size;i++)
            {
                TreeNode*node =que.front();
                que.pop();
                num++;
                if(node->left) que.push(node->left);
                if(node->right) que.push(node->right);
            }
        }
        return num;
    }
};
posted @ 2022-11-11 22:18  只想毕业的菜狗  阅读(40)  评论(0)    收藏  举报