二叉树的层序遍历
class Solution{
public:
vector<vector<int> > levelOrder(TreeNode* root){
queue<TreeNode*> que;
vector<vector<int> > ans;
if(root!=nullptr) que.push(root);
while(!que.empty()){
int size = que.size();
vector<int> temp;
for(int i =0;i<size;i++){
TreeNode* p = que.front();
que.pop();
temp.push_back(p->val);
if(p->left!=nullptr) que.push(p->left);
if(p->right!=nullptr) que.push(p->right);
}
ans.push_back(temp);
}
return ans;
}
};
107.二叉树的层序遍历II
class Solution {
public:
vector<vector<int>> levelOrderBottom(TreeNode* root) {
queue<TreeNode*> que;
vector<vector<int> > ans;
if(root!=nullptr) que.push(root);
while(!que.empty()){
int size = que.size();
vector<int> temp;
for(int i = 0;i<size;i++){
TreeNode * p = que.front();
que.pop();
temp.push_back(p->val);
if(p->left!=nullptr) que.push(p->left);
if(p->right!=nullptr) que.push(p->right);
}
ans.push_back(temp);
}
reverse(ans.begin(),ans.end());
return ans;
}
};
199.二叉树的右视图
class Solution {
public:
vector<int> rightSideView(TreeNode* root) {
queue<TreeNode*> que;
vector<int> ans;
if(root!=nullptr) que.push(root);
while(!que.empty()){
int size = que.size();
for(int i =0;i<size;i++){
TreeNode* p = que.front();
que.pop();
if(p->left!=nullptr) que.push(p->left);
if(p->right!=nullptr) que.push(p->right);
if(i == size-1)
ans.push_back(p->val);
}
}
return ans;
}
};
637.二叉树的层平均值
class Solution {
public:
vector<double> averageOfLevels(TreeNode* root) {
queue<TreeNode*> que;
vector<double> ans;
if(root!=nullptr) que.push(root);
while(!que.empty()){
int size = que.size();
double sum=0;
for(int i=0;i<size;i++){
TreeNode* p =que.front();
que.pop();
sum +=p->val;
if(p->left!=nullptr) que.push(p->left);
if(p->right!=nullptr) que.push(p->right);
}
double mean = sum/size;
ans.push_back(mean);
}
return ans;
}
};