/* 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; } };