题目描述 从上往下打印二叉树
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
解题思路
- 广度优先搜索
- 每一次打印一个结点的时候,如果该结点有子结点,则把该结点的子结点放到一个队列的末尾。接下来到队列的头部取出最早进入队列的结点,重复前面的打印操作,直至队列中所有的结点都被打印出来为止。
代码
class Solution {
public:
vector<int> PrintFromTopToBottom(TreeNode* root) {
vector<int> nums;
queue<TreeNode*> q;
if(!root) return nums;
q.push(root);
while(!q.empty()){
for(int i=0;i<q.size();i++){
TreeNode *t = q.front();
nums.push_back(t->val);
q.pop();
if(t->left) q.push(t->left);
if(t->right) q.push(t->right);
}
}
return nums;
}
};