BM-27-之字形打印二叉树

用两个栈来模拟队列,利用了一个栈倒叙一个栈正序的特点,注意压栈顺序也有改变
就是感觉写出来代码有些重复

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;
}

本文作者:YaosGHC

本文链接:https://www.cnblogs.com/yaocy/p/16850183.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   YaosGHC  阅读(14)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起