/*
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
*/
class Solution {
public:
vector<vector<int> > Print(TreeNode* pRoot) {
stack<TreeNode*> s1; // 奇数层节点
stack<TreeNode*> s2; // 偶数层节点
vector<vector<int> > res;
if(pRoot)
s1.push(pRoot);
while(s1.size() || s2.size()) {
vector<int> ans; // 每一层的节点的值
while(s1.size()) {
auto t = s1.top();
s1.pop();
ans.push_back(t->val); // 将节点值压入ans中
if(t->left)
s2.push(t->left);
if(t->right)
s2.push(t->right);
}
if(ans.size())
res.push_back(ans); // 将奇数层数据压入res
ans.clear(); // 清空ans中的数据
while(s2.size()) {
auto t = s2.top();
s2.pop();
ans.push_back(t->val);
if(t->right)
s1.push(t->right);
if(t->left)
s1.push(t->left);
}
if(ans.size())
res.push_back(ans); // 将偶数层节点的值压入res;
}
return res;
}
};