/*
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) {
//if(root == NULL)
// return vector
queue<TreeNode*> top_data;
if(root != NULL)
top_data.push(root);
vector<int> result;
while(top_data.size() != 0){
queue<TreeNode*> tmp;
while(top_data.size()!=0){
result.push_back(top_data.front()->val);
if(top_data.front()->left != NULL)
tmp.push(top_data.front() -> left);
if(top_data.front()->right != NULL)
tmp.push(top_data.front() -> right);
top_data.pop();
}
top_data=tmp;
}
return result;
}
};