leetcode-102-binary tree level order traversal

Problem Description:

Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level).

For example:
Given binary tree [3,9,20,null,null,15,7],
3
/
9 20
/
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]

题目大意:

给定一棵二叉树,返回层次遍历的结果。

Solutions:

本题和这道题一样,没什么好说的,很简单利用一个队列完成BFS操作。

Code in C++:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    vector<vector<int>> levelOrder(TreeNode* root) {
        vector<vector<int>> res;
        vector<int> tem;
        if(!root) return res;
        queue<TreeNode*> q;
        q.push(root);
        q.push(NULL);
        while(!q.empty())
        {
            TreeNode* t=q.front();
            q.pop();
            if(t)
            {
                tem.push_back(t->val);
                if(t->left)
                    q.push(t->left);
                if(t->right)
                    q.push(t->right);
            }else{
                if(!q.empty())
                {
                    res.push_back(tem);
                    tem.clear();
                    q.push(NULL);
                }else{
                    res.push_back(tem);
                }
            }
        }
        return res;
    }
};