首页 > 代码库 > Binary Tree ZigZag Level Order Traversal leetcode java
Binary Tree ZigZag Level Order Traversal leetcode java
题目:
Given a binary tree, return the zigzag level order traversal 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]]
题解:
这题同样是BFS,用一个flag记录是否需要reverse,如果需要的话就把reverse的结果存储即可。
代码如下:
1 public ArrayList<ArrayList<Integer>> zigzagLevelOrder(TreeNode root) {
2 ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
3
4 if(root==null)
5 return res;
6
7 LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
8 queue.add(root);
9
10 int num = 0;
11 boolean reverse = false;//a flag
12
13 while(!queue.isEmpty()){
14 num = queue.size();
15 ArrayList<Integer> levelres = new ArrayList<Integer>();
16
17 for(int i = 0; i<num; i++){
18 TreeNode node = queue.poll();
19 levelres.add(node.val);
20
21 if(node.left!=null)
22 queue.add(node.left);
23 if(node.right!=null)
24 queue.add(node.right);
25 }
26
27 if(reverse){
28 Collections.reverse(levelres);
29 reverse = false;
30 }else{
31 reverse = true;
32 }
33 res.add(levelres);
34 }
35
36 return res;
37 }
2 ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
3
4 if(root==null)
5 return res;
6
7 LinkedList<TreeNode> queue = new LinkedList<TreeNode>();
8 queue.add(root);
9
10 int num = 0;
11 boolean reverse = false;//a flag
12
13 while(!queue.isEmpty()){
14 num = queue.size();
15 ArrayList<Integer> levelres = new ArrayList<Integer>();
16
17 for(int i = 0; i<num; i++){
18 TreeNode node = queue.poll();
19 levelres.add(node.val);
20
21 if(node.left!=null)
22 queue.add(node.left);
23 if(node.right!=null)
24 queue.add(node.right);
25 }
26
27 if(reverse){
28 Collections.reverse(levelres);
29 reverse = false;
30 }else{
31 reverse = true;
32 }
33 res.add(levelres);
34 }
35
36 return res;
37 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。