题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
利用STL容器,之字形考虑先进后出,用栈
vector<vector<int> > Print(TreeNode* pRoot) {
stack<TreeNode*> q1, q2;
vector<vector<int>> res;
if(!pRoot) return res;
q1.push(pRoot);
while(!q1.empty() || !q2.empty()){
if(!q1.empty()){
vector<int> tempVec;
while(!q1.empty()){
TreeNode* tempTree = q1.top();
q1.pop();
tempVec.push_back(tempTree->val);
if(tempTree->left) q2.push(tempTree->left);
if(tempTree->right) q2.push(tempTree->right);
}
res.push_back(tempVec);
}
else{
vector<int> tempVec;
while(!q2.empty()){
TreeNode* tempTree = q2.top();
q2.pop();
tempVec.push_back(tempTree->val);
if(tempTree->right) q1.push(tempTree->right);
if(tempTree->left) q1.push(tempTree->left);
}
res.push_back(tempVec);
}
}
return res;
}