从上到下打印二叉树(剑指Offer-32.1)

题面

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。

例如: 给定二叉树: [3,9,20,null,null,15,7],

1    3
2   / \
3  9  20
4    /  \
5   15   7

返回:

1[3,9,20,15,7]

限制

1节点总数 <= 1000

思路

BFS层序遍历。

代码

 1/**
 2 * Definition for a binary tree node.
 3 * struct TreeNode {
 4 *     int val;
 5 *     TreeNode *left;
 6 *     TreeNode *right;
 7 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 8 * };
 9 */
10class Solution {
11public:
12    vector<int> levelOrder(TreeNode* root) {
13        vector<int> v;
14        if(root==NULL) return v;
15
16        queue<TreeNode *>q;
17        q.push(root);
18
19        while(!q.empty()){
20            TreeNode *t = q.front(); q.pop();
21            v.push_back(t->val);
22            if(t->left)
23                q.push(t->left);
24            if(t->right)
25                q.push(t->right);
26        }
27        return v;
28    }
29};