用两个栈来模拟队列,利用了一个栈倒叙一个栈正序的特点,注意压栈顺序也有改变
就是感觉写出来代码有些重复
vector<vector<int> > Print(TreeNode* pRoot) {
vector<vector<int>> res;
if (!pRoot) return res;
// 之字形打印在两个栈之间倒腾
stack<TreeNode*> stk1, stk2;
stk1.push(pRoot);
while (!stk1.empty()||!stk2.empty()){
if(!stk1.empty())res.push_back(vector<int>());
while (!stk1.empty()) {
TreeNode* node = stk1.top();
res.back().push_back(node->val);
stk1.pop();
if (node->left) stk2.push(node->left);
if (node->right) stk2.push(node->right);
}
if (!stk2.empty())res.push_back(vector<int>());
while (!stk2.empty()) {
TreeNode* node = stk2.top();
res.back().push_back(node->val);
stk2.pop();
if (node->right) stk1.push(node->right);
if (node->left) stk1.push(node->left);
}
}
return res;
}
标签:node,之字形,BM,back,stk1,stk2,二叉树,res,push
From: https://www.cnblogs.com/yaocy/p/16850183.html