104. 二叉树的最大深度
题目链接
思路
二叉树最大深度这道题用层序遍历的话可以用一个变量记录size更新的次数,15min解决。
class Solution {
public:
int maxDepth(TreeNode* root) {
//二叉树这道题用层序遍历的话可以用一个变量记录size更新的次数,
//即为最大深度
//若用递归法,没看代码随香录视频和文字版想不到题解
queue<TreeNode*> que;
int count = 0;//用count记录最大层数
if (root != nullptr) que.push(root);
while (!que.empty()) {
int size = que.size();
count++;
while (size--) {
TreeNode* node = que.front();
que.pop();
//vector<int> 用于存放数据
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
}
}
return count;
}
};
559. N 叉树的最大深度
题目链接
思路
思路同二叉树的最大深度,用层序遍历,同时用一个变量记录层数。6min bugfree
本人题解
class Solution {
public:
int maxDepth(Node* root) {
//这道题同二叉树的最大深度一样用层序遍历解决最好
queue<Node*> que;
int count = 0;//此变量用来记录N叉树的最大深度
if (root != NULL) que.push(root);
while (!que.empty()) {
int sizeChildren = que.size();
count++;
while (sizeChildren--) {
Node* nod = que.front();
que.pop();
for(int i = 0; i < nod->children.size(); i++) {
if (nod->children[i]) que.push(nod->children[i]);
}
}
}
return count;
}
};
111. 二叉树的最小深度
题目链接
思路
用一个变量记录第一个(既没有左子树也没有右子树的)节点所在的层数即可
class Solution {
public:
int minDepth(TreeNode* root) {
//二叉树的最小深度感觉也是可以用层序遍历做
//用一个变量记录第一个(既没有左子树也没有右子树的)节点所在的层数即可
queue<TreeNode*> que;
if (root != nullptr) que.push(root);
int count = 0;
while (!que.empty()) {
int size = que.size();
count++;
while (size--) {
TreeNode* node = que.front();
que.pop();
if (node->left) que.push(node->left);
if (node->right) que.push(node->right);
if (!node->left && !node->right) {
return count;
}
}
}
return count;
}
};
222. 完全二叉树的节点个数
看了题解做的