Leetcode-binary-tree-zigzag-level-order-traversal
2016-08-11 22:16
417 查看
题目描述
Given a binary tree, return the zigzag level ordertraversal of its nodes' values. (ie, from left to right, then right to left for the next level and alternate between).For example:
Given binary tree{3,9,20,#,#,15,7},
3 / \ 9 20 / \ 15 7
return its zigzag level order traversal as:
[ [3], [20,9], [15,7] ]
confused what"{1,#,2,3}"means? > read more
on how binary tree is serialized on OJ.
OJ's Binary Tree Serialization:
The serialization of a binary tree follows a level order traversal, where '#' signifies a path terminator where no node exists below.
Here's an example:
1 / \ 2 3 / 4 \ 5
The above binary tree is serialized as"{1,2,3,#,#,4,#,#,5}".
层序遍历,只不过,不同层顺序不同。
参考了别人的代码:用两个stack分别存储不同的两侧,在取stack1里结点的时候,把相应结点的孩子结点放进stack2,同理,取stack2里结点的时候,把相应结点的孩子放进stack1.
/** * Definition for binary tree * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ import java.util.*; public class Solution { public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) { ArrayList<ArrayList<Integer> >matrix=new ArrayList(); if(root==null) return matrix; Stack<TreeNode> stack1=new Stack(); Stack<TreeNode> stack2=new Stack(); stack1.push(root); ArrayList<Integer> array=new ArrayList(); while(!stack1.empty()||!stack2.empty()) { while(!stack1.empty())//在打印stack1中存放的层时,将下一层存放入stack2 { TreeNode node=stack1.pop(); if(node.left!=null) stack2.push(node.left); if(node.right!=null) stack2.push(node.right); array.add(node.val); if(stack1.empty())//当前array保存完该层结点时,存入matrix,并将array赋给新的ArrayList; { matrix.add(array); array=new ArrayList<Integer>(); } } while(!stack2.empty())//在打印stack2中存放的层时,将下一层存放入stack1 { TreeNode node=stack2.pop(); if(node.right!=null) stack1.push(node.right); if(node.left!=null) stack1.push(node.left); array.add(node.val); if(stack2.empty()) { matrix.add(array); array=new ArrayList<Integer>(); } } } return matrix; } }
相关文章推荐
- 3000门徒内部训练绝密视频(泄密版)第10课:彻底实战详解使用Java开发Spark程序
- centos7 google
- forlinx *****Nandflash:ChipType= Unknow解决方法
- Sqli-labs less 32
- 斗地主发牌算法
- LNMP(linux+nginx+mysql+php)环境搭建_1
- 不会马拉车的煞笔要学pam
- 中介者模式
- 华为在线训练(6)
- springMVC注解方式返回json
- 【OVS2.5.0源码分析】ofpbuf数据结构分析
- Sqli-labs less 33
- 编写的一个矩阵类(C++描述)
- MAC OSX mpi安装
- JAVA中的并发工具类(三)---CountDownLatch
- Sqli-labs less 34
- 苹果电脑的快捷键介绍
- Python模块之ConfigParser - 读写配置文件
- ef操作类
- eclipse配置Android环境