模板:
public:
vector<int> decorateRecord(TreeNode* root) {
vector<int> res;
if(!root) return res;
queue<TreeNode *> que;
que.push(root);
while(!que.empty()){
TreeNode* node = que.front();
que.pop();
res.push_back(node->val);
if(node->left) que.push(node->left);
if(node->right) que.push(node->right);
}
return res;
}
public:
vector<vector<int>> levelOrder(TreeNode* root) {
queue<TreeNode*> q;
if(root) q.push(root);
vector<vector<int>> result;
while(!q.empty()){
int size=q.size();
//每层定义一个path路径
vector<int> path;
//这里一定要用固定大小size,不要使用q.size(),因为q.size()是不断变化的
for(int i=0;i<size;i++){
TreeNode* node=q.front();
path.push_back(node->val);
q.pop();
if(node->left) q.push(node->left);
if(node->right) q.push(node->right);
}
result.push_back(path);
}
return result;
}