/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};*/
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<vector<int> > list ;
getList(root, list, 0);
return printNum(list);
}
//注意传递引用,否则生成形参
void getList(TreeNode* root, vector<vector<int> > &list, int deep){
if(!root) return ;
if(deep >= list.size()){
//生成新列
list.push_back(vector<int>());
}
list[deep].push_back(root->val);
getList(root->left, list, deep + 1);
getList(root->right, list, deep + 1);
}
vector<int> printNum(vector<vector<int>> list ){
vector<int> ret;
for(int i = 0 ; i < list.size(); i++){
for(int j = 0 ; j < list[i].size(); j++){
ret.push_back(list[i][j]);
}
}
return ret;
}
};