lintcode: 二叉树的锯齿形层次遍历
2016-01-13 11:44
309 查看
题目
样例
给出一棵二叉树
返回其锯齿形的层次遍历为:
JavaCode
九章程序好像简洁了一些
二叉树的锯齿形层次遍历
给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行)样例
给出一棵二叉树
{3,9,20,#,#,15,7},
3 /\ 920 /\ 157
返回其锯齿形的层次遍历为:
[ [3], [20,9], [15,7] ] 解题 交叉着走,受上面两题的影响,考虑用队列,发现不可以,换成栈,发现只用一个栈的话也不可以,(一个栈也能对71%的测试数据)在入栈和出栈的时候,出现了混乱,考虑用两个栈。 下面是自己写的程序,代码写的好燋灼。。。<恶棍天使台词> 关键点:两个栈交叉着进,交叉的出
/** *DefinitionofTreeNode: *publicclassTreeNode{ *publicintval; *publicTreeNodeleft,right; *publicTreeNode(intval){ *this.val=val; *this.left=this.right=null; *} *} */ publicclassSolution{ /** *@paramroot:Therootofbinarytree. *@return:Alistoflistsofintegerinclude *thezigzaglevelordertraversalofitsnodes'values */ publicArrayList<ArrayList<Integer>>zigzagLevelOrder(TreeNoderoot){ //writeyourcodehere ArrayList<ArrayList<Integer>>tree=newArrayList<ArrayList<Integer>>(); if(root==null) returntree; //rightstack出栈序列是左到右该层元素 Stack<TreeNode>leftstack=newStack<TreeNode>(); leftstack.push(root); //leftstack出栈序列是右到左该层元素 Stack<TreeNode>rightstack=newStack<TreeNode>(); booleanleft=true; while(!leftstack.empty()||!rightstack.empty()){ ArrayList<Integer>list=newArrayList<Integer>(); if(left){ intsize=leftstack.size(); for(inti=0;i<size;i++){ TreeNodenode=leftstack.pop(); list.add(node.val); if(node.left!=null) rightstack.push(node.left); if(node.right!=null) rightstack.push(node.right); } }else{ intsize=rightstack.size(); for(inti=0;i<size;i++){ TreeNodenode=rightstack.pop(); list.add(node.val); if(node.right!=null) leftstack.push(node.right); if(node.left!=null) leftstack.push(node.left); } } left=!left; tree.add(list); } returntree; } }
JavaCode
相关文章推荐
- C++菱形继承及解决方法
- 为何电脑里的物体如此逼真
- 单例模式
- 解决ajax获取到数据放到echarts里不显示问题
- Maven架构及使用
- mysql kettle 分页
- 使用邮件发送执行时间久的SQL语句
- 清空iptables
- 解析Java的Jackson库中对象的序列化与数据泛型绑定
- poj3207Ikki's Story IV - Panda's Trick【2-SAT】
- 【第九章】 Spring的事务 之 9.3 编程式事务 ——跟我学spring3
- SwipeRefreshLayout与ViewPager滑动事件冲突解决
- 查找反复的字符串
- Oracle 硬解析查询
- SSH框架jsp迭代实体类,并获取关联对象的属性
- 详解python时间模块中的datetime模块
- 快排
- Android Studio 2.0:速度提升,极大提高开发效率
- 98%的人没解出的德国面试逻辑题!?
- MyBatis3.2.7+logBack1.1.3 打印sql