Chinaunix首页 | 论坛 | 博客
  • 博客访问: 262795
  • 博文数量: 170
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1709
  • 用 户 组: 普通用户
  • 注册时间: 2014-05-06 18:01
文章分类

全部博文(170)

文章存档

2016年(11)

2015年(130)

2014年(29)

分类: Java

2015-09-26 15:19:05



import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;


public class BinaryTreeZigzagLevelOrderTraversal {


public static void main(String[] args) {
// TODO Auto-generated method stub


}


public List<List<Integer>> zigzagLevelOrder(TreeNode root) {

List<List<Integer>> list = new ArrayList<>();
Queue<TreeNode> queue = new LinkedList<TreeNode>();
if (root != null) {
queue.add(root);
}
boolean isDobule = true;
while (!queue.isEmpty()) {
List<Integer> ele = new ArrayList<>();
List<TreeNode> postNode = new ArrayList<>();
while (!queue.isEmpty()) {
TreeNode node = queue.poll();
ele.add(node.val);
//理解转圈的过程
if (isDobule){
if (node.left != null) {
postNode.add(node.left);
}
if (node.right != null) {
postNode.add(node.right);
}
}else{
if (node.right != null) {
postNode.add(node.right);
}
if (node.left != null) {
postNode.add(node.left);
}
}


}
list.add(ele);
//最后倒置使得相应顺序
for (int i = postNode.size() - 1; i >= 0; i--)
queue.offer(postNode.get(i));
// 改变顺序
isDobule=!isDobule;



}
return list;
}


}

阅读(652) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~