天天看点

剑指offer_从上往下打印二叉树

原题描述

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

思路

        就是个二叉树的层次遍历,采用队列即可。需要注意root若为空直接返回空的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) {
        queue<TreeNode*>que;
        vector<int>vec;
        if(root==NULL) return vec;
        que.push(root);
        while(!que.empty()){
            TreeNode*p=que.front();            
            if(p->left) que.push(p->left);
            if(p->right) que.push(p->right);
            que.pop();
            vec.push_back(p->val);
        }
        return vec;
    }
};