码迷,mamicode.com
首页 > 其他好文 > 详细

103. Binary Tree Zigzag Level Order Traversal

时间:2018-09-20 11:21:15      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:new   binary   seq   map   amp   ISE   lse   ==   ash   

 1 //New 用一个记录queue.size()就可以
 2 class Solution {
 3     public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
 4         List<List<Integer>> res = new ArrayList<>();
 5         if(root == null) return res;
 6         Queue<TreeNode> queue = new LinkedList<>();
 7         queue.offer(root);
 8         int size = queue.size();
 9         List<Integer> list = new ArrayList<>();
10         boolean seq = false;
11         while(!queue.isEmpty()) {
12             for(int i = 0; i < size; i++) {
13                 TreeNode node = queue.poll();
14                 list.add(node.val);
15                 if(node.left != null) {
16                     queue.offer(node.left);
17                 }
18                 if(node.right != null) {
19                     queue.offer(node.right);
20                 }
21             }
22             if(seq) {
23                 List<Integer> temp = new ArrayList<>();
24                 for(int j = list.size() - 1; j >= 0; j--) {
25                     temp.add(list.get(j));
26                 }
27                 res.add(temp);
28             }else {
29                 res.add(list);
30             }
31             seq = !seq;
32             size = queue.size();
33             list = new ArrayList<>();
34         }
35         return res;
36     }   
37 }
38 
39 
40 
41 //Old HashMap
42 class Solution {
43     public List<List<Integer>> zigzagLevelOrder(TreeNode root) {
44         List<List<Integer>> res = new ArrayList<>();
45         if(root == null) return res;
46         Queue<TreeNode> queue = new LinkedList<>();
47         queue.offer(root);
48         HashMap<TreeNode, Integer> map = new HashMap<>();
49         map.put(root, 0);
50         int record = 0;
51         List<Integer> list = new ArrayList<>();
52         boolean seq = false;
53         while(!queue.isEmpty()) {
54             TreeNode node = queue.poll();
55             int layer = map.get(node);
56             if(layer != 0 && layer != record) {
57                 if(seq) {
58                     List<Integer> temp = new ArrayList<>();
59                     for(int i = list.size() - 1; i >= 0; i--) {
60                         temp.add(list.get(i));
61                     }
62                     res.add(temp);
63                 }else {
64                     res.add(list);
65                 }
66                 list = new ArrayList<>();
67                 record = layer;
68                 seq = !seq;
69             }
70             list.add(node.val);
71             if(node.left != null) {
72                 queue.offer(node.left);
73                 map.put(node.left, layer+1);
74             }
75             if(node.right != null) {
76                 queue.offer(node.right);
77                 map.put(node.right, layer+1);
78             }
79         }
80         if(seq) {
81             List<Integer> temp = new ArrayList<>();
82             for(int i = list.size() - 1; i >= 0; i--) {
83                 temp.add(list.get(i));
84             }
85             res.add(temp);
86         }else {
87             res.add(list);
88         }
89         return res;
90     }
91     
92 }

 

103. Binary Tree Zigzag Level Order Traversal

标签:new   binary   seq   map   amp   ISE   lse   ==   ash   

原文地址:https://www.cnblogs.com/goPanama/p/9678645.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!