按层遍历二叉树

来源:互联网 发布:激光打标机软件配套 编辑:程序博客网 时间:2024/05/17 09:11

使用C++中的pair类型来存储树的节点和它的层数


vector<vector<int> > levelOrder(TreeNode *root){    vector<vector<int> > vec;    if (root == NULL)        return vec;        queue<pair<TreeNode*, int> > queue;    pair<TreeNode*, int> pair(root, 0);  //根节点是第0层    queue.push(pair);        while (!queue.empty()) {        pair = queue.front();        queue.pop();        int val = pair.first->val;        int level = pair.second;                if (vec.size() <= level)            vec.push_back(vector<int>());  //增加一个空的新向量存储新一层数据        vec[level].push_back(val);                        if (pair.first->left)            queue.push(make_pair(pair.first->left, level+1));        if (pair.first->right)            queue.push(make_pair(pair.first->right, level+1));    }        return vec;}


0 0