原题传送门->>>

题目描述:

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。
示例:

  • 二叉树:[3,9,20,null,null,15,7],

  • 3

  • / \
  • 9 20
  • / \
  • 15 7
    返回其层次遍历结果:

  • [

  • [3],
  • [9,20],
  • [15,7]
  • ]
/**
 * 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> > ans;
    vector<TreeNode*> pre;
    vector<vector<int>> levelOrder(TreeNode* root) {
        if(!root)
            return ans;
    pre.push_back(root);
    while(!pre.empty())
    {
        vector<TreeNode*> cur;
        vector<int> tmp;
        for(vector<TreeNode*>::iterator i = pre.begin(); i != pre.end(); ++i)
        {
            tmp.push_back((*i)->val);
            if((*i)->left)//注意!!!!!
                cur.push_back((*i)->left);
            if((*i)->right)
                cur.push_back((*i)->right);
        }
        pre = cur;
        ans.push_back(tmp);
    }
        return ans;
    }
};

唯一需要注意的是注释标“注意”的部分,(∗i)−>left的括号不能去掉,因为−>的优先级高于∗