請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。
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; }}
新聞熱點
疑難解答