剑指offer——从上往下打印二叉树
题目描述:从上到下打印二叉树的节点,同一层的从左到右打印
思路:采用队列来存储单层的节点,然后通过删除队列的头结点操作,依次遍历每一层。
代码为:
1 import java.util.ArrayList; 2 /** 3 public class TreeNode { 4 int val = 0; 5 TreeNode left = null; 6 TreeNode right = null; 7 8 public TreeNode(int val) { 9 this.val = val; 10 11 } 12 13 } 14 */ 15 //用ArrayList来模拟一个队列 16 public class Solution { 17 public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { 18 ArrayList<Integer> list = new ArrayList<>(); 19 ArrayList<TreeNode> queue = new ArrayList<>(); 20 if (root == null){ 21 return list; 22 } 23 queue.add(root); 24 while(queue.size()!=0){ 25 TreeNode temp = queue.remove(0); 26 if(temp.left!=null){ 27 queue.add(temp.left); 28 } 29 if(temp.right!=null){ 30 queue.add(temp.right); 31 } 32 list.add(temp.val); 33 } 34 return list; 35 } 36 }