自然的解法,一层一层的添加节点,再打印
/*
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<int> res;
vector<vector<int>> data;
int level = 0;
GetPrintFromTopToBottom(root,0,data);
for(int i = 0;i<data.size();i++){
for(int j=0;j<data[i].size();j++){
res.push_back(data[i][j]);
}
}
return res;
}
void GetPrintFromTopToBottom(TreeNode* root,int level,vector<vector<int>> &data) {
if(root == NULL){
return;
}
if(data.size() <= level){
data.push_back({root->val});
}else{
data[level].push_back(root->val);
}
GetPrintFromTopToBottom(root->left,level+1,data);
GetPrintFromTopToBottom(root->right,level+1,data);
}
};



京公网安备 11010502036488号