牛客网《剑指Offer》 编程 22. 从上往下打印二叉树

题目描述

从上往下打印出二叉树的每个节点,同层节点从左至右打印。

解题思路

设置一个队列。先将根节点入队。

当队列不为空的时候,

       如果队首节点的左子树不为空,则将左子树入队。如果右子树不为空,将右子树入队。

      将队首元素的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;
    }
};

猜你喜欢

转载自blog.csdn.net/eriHanami/article/details/82794282