題目描述:請實現一個函數按照之字形打印二叉樹,即第一行按照從左到右的順序打印,第二層按照從右至左的順序打印,第三行按照從左到右的順序打印,其他行以此類推。
思路1:借助兩個棧實現
思路2:在偶數行需要倒著打印,可以用list.add(0,node.val);反著插入節點值
import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; public class Solution {public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {ArrayList<ArrayList<Integer>> result=new ArrayList<ArrayList<Integer>>();if(pRoot==null) return result;Queue<TreeNode> queue=new LinkedList<TreeNode>();queue.add(pRoot);int rows=1;while(!queue.isEmpty()){ArrayList<Integer> list=new ArrayList<>();int size=queue.size();for(int i=0;i<size;i++){TreeNode node=queue.poll();if(rows%2==0)list.add(0,node.val);elselist.add(node.val);if(node.left!=null)queue.offer(node.left);if(node.right!=null)queue.offer(node.right);}result.add(list);rows++;}return result;} }
?