剑指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;
    }
};
posted @ 2019-04-02 10:16  {-)大傻逼  阅读(134)  评论(0)    收藏  举报
欢迎转载,转载请注明本文地址。