Binary Tree Level Order Traversal II

来源:互联网 发布:多益网络绑定战盟 编辑:程序博客网 时间:2024/04/30 03:10
/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public:    vector<vector<int> > res;    vector<vector<int> > levelOrderBottom(TreeNode *root) {        queue<TreeNode*> mq1;        queue<TreeNode*> mq2;        if(root==NULL)        {            return res;        }        mq1.push(root);        while((!mq1.empty())||(!mq2.empty()))        {            if(mq1.empty())            {                //pop mq2 and fill mq1                vector<int> tmp;                while(!mq2.empty())                {                    TreeNode* nn=mq2.front();                    mq2.pop();                    tmp.push_back(nn->val);                    if(nn->left!=NULL)                    {                        mq1.push(nn->left);                    }                    if(nn->right!=NULL)                    {                        mq1.push(nn->right);                    }                }                res.push_back(tmp);            }            else            {                //pop mq1 and fill mq2                vector<int> tmp;                while(!mq1.empty())                {                    TreeNode* nn=mq1.front();                    mq1.pop();                    tmp.push_back(nn->val);                    if(nn->left!=NULL)                    {                        mq2.push(nn->left);                    }                    if(nn->right!=NULL)                    {                        mq2.push(nn->right);                    }                }                res.push_back(tmp);            }        }        return vector<vector<int> >(res.rbegin(),res.rend());    }};


和Binary Tree Level Order Traversal一模一样,只不过最后返回时逆序迭代了一下

0 0
原创粉丝点击