剑指Offer——按之字形顺序打印二叉树
2024-10-19 20:24:54
题目描述:
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
分析:
我们都知道二叉树的层次遍历用的是队列。
但是这个的子树的结点是先进后出的,所以我们使用栈更加方便。
而且为了方便,我用了两个栈,因为不是每一次都是先进左子树再进右子树的。
代码:
/*
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) {
vector<vector<int> > res;
if(pRoot == NULL) return res;
stack<TreeNode*> s1, s2;
s1.push(pRoot);
while() {
vector<int> v1;
while(!s1.empty()) {
TreeNode* top = s1.top();
v1.push_back(top->val);
if(top->left) s2.push(top->left);
if(top->right) s2.push(top->right);
s1.pop();
}
res.push_back(v1);
if(s2.empty()) break;
vector<int> v2;
while(!s2.empty()) {
TreeNode* top = s2.top();
v2.push_back(top->val);
if(top->right) s1.push(top->right);
if(top->left) s1.push(top->left);
s2.pop();
}
res.push_back(v2);
if(s1.empty()) break;
}
return res;
}
};
最新文章
- 创业日志N,一听到别人说创业我就怕
- [转]史上最全的CSS hack方式一览
- 【Java EE 学习 20】【使用过滤器实现登陆验证、权限认证】【观察者模式和监听器(使用监听器实现统计在线IP、登录IP 、踢人功能)】
- AP(应付帐管理)
- win7和centos双系统安装
- AndroidAnnotations部署
- input单选框全选与反选
- bzoj 2141 : 排队 分块
- VS前台设计中的缺陷
- 阿录帮帮忙—spring mvc 的hello world
- Angular CLI: 发布到 GitHub Pages
- 爬虫_网页url设计
- echart 常用配置
- Unity热更新学习(二) —— ToLua c#与lua的相互调用
- log4j打印堆栈信息
- scrapy之多环境的选择使用
- Reachability
- Packt发布了2018年技能提升报告
- NPM 使用及npm升级中问题解决
- windows linux hosts文件的配置,开发项目中域名跳转等。
热门文章
- json中把非json格式的字符串转换成json对象再转换成json字符串
- oozie调度中的重试和手工rerun一个workflow
- QQ会员活动运营平台架构设计实践——高效自动化运营
- Repeater DataTable 折叠动态加载
- Goroutine并发调度模型深度解析之手撸一个协程池
- 9款很酷炫jQuery/HTML5特效应用 有源码哦~
- 学习记录jQuery的animate函数
- 【BZOJ】1047: [HAOI2007]理想的正方形(单调队列/~二维rmq+树状数组套树状数组)
- Codeforces Round #265 (Div. 2)
- 【转】虚拟串口VSPM解决串口编程问题