请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。
IDEA
就是层序遍历二叉树,采用队列。
只不过每次遍历完一层,改变一下输出顺序。
CODE
import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public ArrayList<ArrayList<Integer> > PRint(TreeNode pRoot) { ArrayList<ArrayList<Integer> > result=new ArrayList<ArrayList<Integer> >(); if(pRoot==null) return result; boolean flag=true; ArrayList<Integer> list=new ArrayList<Integer>(); Queue<TreeNode> que=new LinkedList<TreeNode>(); que.add(pRoot); int begin=0,end=1; while(!que.isEmpty()){ TreeNode cur=que.remove(); list.add(cur.val); begin++; if(cur.left!=null) que.add(cur.left); if(cur.right!=null) que.add(cur.right); if(begin==end){ end=que.size(); begin=0; if(flag==true){ result.add(list); }else{ result.add(reverse(list)); } flag=!flag; list=new ArrayList<Integer>(); } } return result; } ArrayList reverse(ArrayList<Integer> list){ ArrayList<Integer> list1=new ArrayList<Integer>(); for(int i=list.size()-1;i>=0;i--){ list1.add(list.get(i)); } return list1; }}
新闻热点
疑难解答