Binary Tree Zigzag Level Order Traversal,z字形遍历二叉树,得到每层访问的节点值。

问题描述:

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,null,null,15,7],

    3
   / \
  9  20
    /  \
   15   7

 

return its zigzag level order traversal as:

[
  [3],
  [20,9],
  [15,7]
]

算法分析:和前面问题类似。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
public class BinaryTreeZigzagLevelOrderTraversal
{
     public List<List<Integer>> zigzagLevelOrder(TreeNode root)
     {
         List<Integer> list = new ArrayList<>();
         List<List<Integer>> res = new ArrayList<>();
          
         if(root == null)
         {
             return res;
         }
          
         Stack<TreeNode> s1 = new Stack<>();
         Stack<TreeNode> s2 = new Stack<>();
          
         s1.push(root);
         while(!s1.isEmpty() || !s2.isEmpty())
         {
             while(!s1.isEmpty())
             {
                 TreeNode temp = s1.pop();
                 if(temp.left != null)
                 {
                     s2.push(temp.left);
                 }
                 if(temp.right != null)
                 {
                     s2.push(temp.right);
                 }
                 list.add(temp.val);
             }
             if(list.size() != 0)
                 res.add(list);
             list = new ArrayList<>();
             while(!s2.isEmpty())
             {
                 TreeNode temp = s2.pop();
                 if(temp.right != null)
                 {
                     s1.push(temp.right);
                 }
                 if(temp.left != null)
                 {
                     s1.push(temp.left);
                 }
                 list.add(temp.val);
             }
             if(list.size() != 0)
                 res.add(list);
             list = new ArrayList<>();
         }
         return res;
     }
}

  

posted @   32ddd  阅读(864)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示