按之字形顺序打印二叉树

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

 

java:

 1 import java.util.*;
 2 
 3 /*
 4 public class TreeNode {
 5     int val = 0;
 6     TreeNode left = null;
 7     TreeNode right = null;
 8 
 9     public TreeNode(int val) {
10         this.val = val;
11 
12     }
13 
14 }
15 */
16 public class Solution {
17     public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
18         ArrayList<ArrayList<Integer> > res = new ArrayList<ArrayList<Integer> >() ;
19         if (pRoot == null)
20             return res ;
21         Queue<TreeNode> queue = new LinkedList<TreeNode>() ;
22         queue.add(pRoot) ;
23         boolean flag = false ;
24         while(!queue.isEmpty()){
25             ArrayList<Integer> list = new ArrayList<Integer>() ;
26             int len = queue.size() ;
27             for(int i = 0 ; i < len ; i++){
28                 TreeNode node = queue.poll() ;
29                 list.add(node.val) ;
30                 if (node.left != null)
31                     queue.add(node.left) ;
32                 if (node.right != null)
33                     queue.add(node.right) ;
34             }
35             if (flag == true){
36                 Collections.reverse(list) ;
37             }
38             flag = !flag ;
39             if (list != null){
40                 res.add(list) ;
41             }
42         }
43         
44         return res ;
45     }
46 
47 }

 

posted @ 2019-04-16 23:25  __Meng  阅读(189)  评论(0编辑  收藏  举报