劍指Offer-60-把二叉樹列印成多行
阿新 • • 發佈:2019-01-10
題目描述
從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。
import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> array = new ArrayList<ArrayList<Integer>>(); Queue<TreeNode> queue1 = new LinkedList<TreeNode>(); Queue<TreeNode> queue2 = new LinkedList<TreeNode>(); if(pRoot==null){ return array; } queue1.add(pRoot); ArrayList<Integer> temp; while(!queue1.isEmpty()||!queue2.isEmpty()){ temp = new ArrayList<Integer>(); if(!queue1.isEmpty()){ while(!queue1.isEmpty()){ TreeNode node = queue1.poll(); temp.add(node.val); if(node.left!=null){ queue2.add(node.left); } if(node.right!=null){ queue2.add(node.right); } } array.add(temp); } else{ temp = new ArrayList<Integer>(); while(!queue2.isEmpty()){ TreeNode node = queue2.poll(); temp.add(node.val); if(node.left!=null){ queue1.add(node.left); } if(node.right!=null){ queue1.add(node.right); } } array.add(temp); } } return array; } }