【leetcode_C++_二叉树_day13】104.二叉树的最大深度&& 111.二叉树的最小深度 &&222.完全二叉树的节点个数
层序遍历的应用罢了。模板走天下。
104.二叉树的最大深度 (优先掌握递归)
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例: 给定二叉树 [3,9,20,null,null,15,7],

返回它的最大深度 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],

返回它的最小深度 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:

输入: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;
}
};
本文来自博客园,作者:只想毕业的菜狗,转载请注明原文链接:https://www.cnblogs.com/MLcaigou/p/16882216.html
浙公网安备 33010602011771号