60 把二叉树打印成多行
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
思路一:非递归的方法
1 /* 2 public class TreeNode { 3 int val = 0; 4 TreeNode left = null; 5 TreeNode right = null; 6 public TreeNode(int val) { 7 this.val = val; 8 } 9 } 10 */ 11 import java.util.ArrayList; 12 import java.util.Queue; 13 import java.util.LinkedList; 14 public class Solution { 15 ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { 16 ArrayList<ArrayList<Integer>> list = new ArrayList<ArrayList<Integer>>(); 17 //考虑最特殊情况 18 if(pRoot == null) return list; 19 Queue<TreeNode> queue = new LinkedList<TreeNode>(); 20 queue.offer(pRoot); 21 while(!queue.isEmpty()){ 22 int count = 0;//count变量表示当前层已经打印的结点个数 23 int size = queue.size(); //size变量表示当前层的总结点个数 24 //list是大的ArrayList,temp是里面小的ArrayList.每遍历完一层,要把temp放进list里面 25 ArrayList<Integer> temp = new ArrayList<Integer>(); 26 while(count<size){ 27 count++; 28 TreeNode pr = queue.poll(); 29 temp.add(pr.val); 30 if(pr.left!=null) queue.offer(pr.left); 31 if(pr.right!=null) queue.offer(pr.right); 32 } 33 list.add(temp); 34 } 35 return list; 36 } 37 }
思路二:递归
            
 
作者:shareidea            
 
出处:https://www.cnblogs.com/shareidea94/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。   
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号