题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
<分析>
借助一个队列即可解决
import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /** * * @author zy * @date 2017年10月4日 上午11:29:30 * @Decription 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 */ public class Ex15 { class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> result = new ArrayList<>(); if (root==null) { return result; } Queue<TreeNode> queue = new LinkedList<>(); //根结点进队 queue.offer(root); while(!queue.isEmpty()){ //队列头出队 TreeNode treeNode = queue.poll(); //左子结点不为空则进队 if (treeNode.left!=null) { queue.offer(treeNode.left); } //右子结点不为空则进队 if (treeNode.right!=null) { queue.offer(treeNode.right); } result.add(treeNode.val); } return result; } }