LeetCode 102 二叉树的层序遍历 2023.11.8
class Solution {
public:
vector<vector<int>> levelOrder(TreeNode* root) {
vector<vector<int>> result;
if(root == NULL)
return result;
queue<TreeNode*> que;
que.push(root);
while (!que.empty())
{
vector<int> vec;
int size = que.size();
while (size--)
{
TreeNode *temp = que.front();
que.pop();
vec.push_back(temp->val);
if(temp->left)
que.push(temp->left);
if(temp->right)
que.push(temp->right);
}
result.push_back(vec);
}
return result;
}
};
LeetCode 107 二叉树的层序遍历II 2023.11.8
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
vector<vector<int>> result;
if(root == NULL)
return result;
queue<TreeNode*> que;
que.push(root);
while (!que.empty())
{
vector<int> vec;
int size = que.size();
while (size--)
{
TreeNode *temp = que.front();
que.pop();
vec.push_back(temp->val);
if(temp->left)
que.push(temp->left);
if(temp->right)
que.push(temp->right);
}
result.push_back(vec);
}
reverse(result.begin(), result.end());
return result;
}
};
LeetCode 199 二叉树的右视图 2023.11.8
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
vector<int> result;
if(root == NULL)
return result;
queue<TreeNode*> que;
que.push(root);
while (!que.empty())
{
int size = que.size();
int sym = size;
while (size--)
{
TreeNode *temp = que.front();
que.pop();
if(sym == size + 1)
result.push_back(temp->val);
if(temp->right)
que.push(temp->right);
if(temp->left)
que.push(temp->left);
}
}
return result;
}
};
LeetCode 637 二叉树的层平均值 2023.11.8
class Solution {
public:
vector<double> averageOfLevels(TreeNode* root) {
vector<double> result;
if(root == NULL)
return result;
queue<TreeNode*> que;
que.push(root);
while (!que.empty())
{
double sum = 0;
int size = que.size();
int num = size;
while (size--)
{
TreeNode *temp = que.front();
que.pop();
sum += temp->val;
if(temp->left)
que.push(temp->left);
if(temp->right)
que.push(temp->right);
}
result.push_back(sum/num);
}
return result;
}
};
LeetCode 429 N叉树的层序遍历 2023.11.8
class Solution {
public:
vector<vector<int>> levelOrder(Node* root) {
vector<vector<int>> result;
if(root == NULL)
return result;
queue<Node*> que;
que.push(root);
while (!que.empty())
{
vector<int> vec;
int size = que.size();
while (size--)
{
Node *temp = que.front();
que.pop();
vec.push_back(temp->val);
for (int i = 0; i < temp->children.size(); i++)
que.push(temp->children[i]);
}
result.push_back(vec);
}
return result;
}
};