剑指offer题目22:从上往下打印二叉树
题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解答思路
很快就想到思路了,先把根节点放到队列里面,然后如果队列不为空,则一直遍历队列,把队列里的节点输出,并把节点的左右节点放到队列里面。
实现代码
/*
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> collector;
if(root) {
queue<TreeNode*> nodeVector;
nodeVector.push(root);
while(nodeVector.size()) {
// 取出队列首部的第一个元素
TreeNode* node = nodeVector.front();
nodeVector.pop();
collector.push_back(node->val);
// 依次放入左右到队列尾部
if(node->left) nodeVector.push(node->left);
if(node->right) nodeVector.push(node->right);
}
}
return collector;
}
};
作者:大傻逼
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号