//107. Binary Tree Level Order Traversal II
//过程:第一次出错:queue没有top函数
// 第二次:stack没有begin,end、clear函数
//总结:基本STL掌握的还不够。
C++代码:
#include <cstdio>
#include <cstring>
#include<algorithm>
#include<math.h>
#include<set>
#include<queue>
#include<vector>
#include<stdlib.h>
#include<iostream>
#include<sstream>
#include<utility>
#define MAXN 100005
#include<stack>
#define INF 0x7fffffff
#include<fstream>
#include<time.h>
//#define lxc
using namespace std;
/**
* 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>> ret;
if (root == NULL)
return ret;
queue<TreeNode*> q;
q.push(root);
stack<vector<int>> v;
while (!q.empty()) {
vector<int> temp ;
int len = q.size();
for (int i=0 ; i<len; i++) {
TreeNode *node = q.front();
q.pop();
temp.push_back(node->val);
if (node->left)
q.push(node->left);
if (node->right)
q.push(node->right);
}
v.push(temp);
}
while (!v.empty()) {
vector<int> temp = v.top();
v.pop();
ret.push_back(temp);
}
return ret;
}
};