/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
* };
*/
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param pRoot TreeNode类
* @return int整型vector<vector<>>
*/
vector<vector<int> > Print(TreeNode* pRoot) {
// write code here
TreeNode* head = pRoot;
vector<vector<int>> res;
if(head == NULL)return res;
stack<TreeNode*> s1, s2;
s1.push(head);
vector<int> temp;
while(!s1.empty()||!s2.empty())
{
while(!s1.empty())
{
TreeNode* node = s1.top();
temp.push_back(node->val);
if(node->left)
s2.push(node->left);
if(node->right)
s2.push(node->right);
s1.pop();
}
if(temp.size())
res.push_back(temp);
temp.clear();
while(!s2.empty())
{
TreeNode* node = s2.top();
temp.push_back(node->val);
if(node->right)
s1.push(node->right);
if(node->left)
s1.push(node->left);
s2.pop();
}
if(temp.size())
res.push_back(temp);
temp.clear();
}
return res;
}
};