【leetcode】107. Binary Tree Level Order Traversal II

来源:互联网 发布:php搜索引擎源码 编辑:程序博客网 时间:2024/06/05 17:47

bfs,利用两个队列,分别保存当前层和下一层的元素。

注意输出是从叶子到根节点,结点从左往右

/** *  @author         johnsondu *  @time           19:56 15th Oct 2015 *  @status         Accepted *  @strategy       use bfs, two queue for store respect layer nodes *  @problem        Binary Tree Level Order Traversal II *  @url            https://leetcode.com/problems/binary-tree-level-order-traversal-ii/ *//** * 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>> ans;        if(root == NULL) return ans;        queue<TreeNode*> q1;        queue<TreeNode*> q2;        TreeNode *cur = root;        q1.push(cur);        while(!q1.empty())        {            vector<int> tmp;            while(!q1.empty()) {                TreeNode* cur = q1.front();                q1.pop();                tmp.push_back(cur->val);                if(cur->left != NULL) q2.push(cur->left);                if(cur->right != NULL) q2.push(cur->right);            }            while(!q2.empty()) {                q1.push(q2.front());                q2.pop();            }            ans.push_back(tmp);        }        vector<vector<int>> result(ans.rbegin(), ans.rend());        return result;    }};


0 0
原创粉丝点击