剑指offer_ 按之字形顺序打印二叉树
题目描述
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
和上题差不多,加上一个反转list就行了,设置一个flag标志位,每循环一轮就反置。可以使用Collections工具类的reverse()方法。
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 ArrayList<ArrayList<Integer> > ans= new ArrayList<>(); 18 ArrayList<TreeNode> queue = new ArrayList<>(); 19 boolean flag = false; 20 public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { 21 if(pRoot ==null) return ans; 22 queue.add(pRoot); 23 while(!queue.isEmpty()){ 24 int count = queue.size(); 25 ArrayList<Integer> arr= new ArrayList<>(); 26 while(count-->0){ 27 TreeNode temp = queue.remove(0); 28 arr.add(temp.val); 29 if(temp.left!=null){queue.add(temp.left);} 30 if(temp.right!=null){queue.add(temp.right);} 31 } 32 if(flag){ 33 Collections.reverse(arr); 34 } 35 flag = !flag; 36 ans.add(arr); 37 } 38 return ans; 39 } 40 41 }

浙公网安备 33010602011771号