Binary Tree Level Order Traversal II

来源:互联网 发布:饥荒文件修改数据 编辑:程序博客网 时间:2024/06/16 09:09

层序遍历,先用一个栈把结点分层塞进去,再逐个出栈:

/** * 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>> levelOrderBottom(TreeNode* root) {        vector<vector<int> >re;        stack<vector<TreeNode*> > SaveTree;        if(root==NULL)        return re;        vector<TreeNode*> first;        first.push_back(root);        SaveTree.push(first);        while(!(SaveTree.top()).empty())        {            vector<TreeNode*> next;            vector<TreeNode*> & pre=SaveTree.top();            for(int i=0;i<pre.size();i++)            {                if(pre[i]->left!=NULL)                next.push_back(pre[i]->left);                if(pre[i]->right!=NULL)                next.push_back(pre[i]->right);            }            SaveTree.push(next);        }        SaveTree.pop();        while(!SaveTree.empty())        {            vector<TreeNode*> & temp=SaveTree.top();            vector<int> pushIn;            for(int i=0;i<temp.size();i++)            {                pushIn.push_back(temp[i]->val);            }            re.push_back(pushIn);            SaveTree.pop();        }        return re;            }};


0 0