题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路
设置一个队列。先将根节点入队。
当队列不为空的时候,
如果队首节点的左子树不为空,则将左子树入队。如果右子树不为空,将右子树入队。
将队首元素的val域放入vector中。队首元素出队。
最后返回vector。
代码实现
/*
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;
queue<TreeNode* > queueTreeNode;//构建一个队列
if(root){//先将根放入队列中
queueTreeNode.push(root);
}
while(queueTreeNode.size()){//当队列不为空时
TreeNode* front=queueTreeNode.front();
res.push_back(front->val);//将队列最前端元素的val值放入vector中。
if(front->left){//如果左子树不为空,则将左子树放入队列
queueTreeNode.push(front->left);
}
if(front->right){//如果右子树不为空,则将右子树放入队列
queueTreeNode.push(front->right);
}
queueTreeNode.pop();//将队列的最前端元素(便利过的)弹出
}
return res;
}
};