题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
利用一个队列来进行层序遍历,压root、压root->left,压root->right、pop();
//有时间可以和之前一道,二叉树的后序遍历,非递归做法的,压两次栈。那道题对比一下。
Code:
/*
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> que;
queue<TreeNode*> q;
TreeNode* fr;
if(root==NULL) return que;
q.push(root);
while(!q.empty()){
fr=q.front();
que.push_back(fr->val);
if(fr->left!=NULL) q.push(fr->left);
if(fr->right!=NULL) q.push(fr->right);
q.pop();
}
return que;
}
};