[leetcode]Binary Tree Level Order Traversal II

来源:互联网 发布:优美图软件下载 编辑:程序博客网 时间:2024/06/05 15:30
#include<iostream>#include<list>#include<queue>#include<vector>using namespace std;struct TreeNode{    int val;    TreeNode* left;    TreeNode* right;    TreeNode(int value):val(value),left(NULL),right(NULL){};};class Solution{public:    void fun(TreeNode* root)    {        deque<TreeNode*>result;        vector<vector<int>>talres;        vector<int>res;        if(!root)            return;        TreeNode* cur=root;        result.push_back(cur);        while(!result.empty())        {            res.push_back(result.front()->val);                 if(result.front()->left)                result.push_back(result.front()->left);            if(result.front()->right)                result.push_back(result.front()->right);            result.pop_front();             }           for(auto i:res)        {                   cout<<i<<' ';        }        cout<<endl;    }    void level(TreeNode* root)    {        deque<TreeNode*>resultnode;        deque<TreeNode*>resnode;        vector<vector<int>>resultdata;        vector<int>resdata;        TreeNode* cur=root;        resnode.push_back(cur);        while(!resnode.empty())        {            while(!resnode.empty())            {                resdata.push_back(resnode.front()->val);                if(resnode.front()->left)                    resultnode.push_back(resnode.front()->left);                if(resnode.front()->right)                    resultnode.push_back(resnode.front()->right);                resnode.pop_front();            }            resultdata.push_back(resdata);            resdata.clear();            swap(resnode,resultnode);        }        reverse(resultdata.begin(),resultdata.end());        for(auto i:resultdata)            for(auto j:i)                cout<<j<<' ';        cout<<endl;    }};void main(){    TreeNode* node1=new TreeNode(1);    TreeNode* node2=new TreeNode(2);    TreeNode* node3=new TreeNode(3);    TreeNode* node4=new TreeNode(4);    TreeNode* node5=new TreeNode(5);    TreeNode* node6=new TreeNode(6);    TreeNode* node7=new TreeNode(7);    node1->left=node2;    /*node1->right=node3;    node2->left=node4;    node2->right=node5;    node3->left=node6;    node3->right=node7;*/    node2->left=node3;    node3->right=node4;    node1->right=node5;    Solution solution;    solution.fun(node1);    solution.level(node1);}
0 0
原创粉丝点击