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 { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> result = new ArrayList<>(); Queue<TreeNode> queue = new LinkedList<>(); if (root != null) { queue.add(root); while (!queue.isEmpty()) { // 取出头上第一个入队元素 TreeNode treeNode = ((LinkedList<TreeNode>)queue).pollFirst(); result.add(treeNode.val); if (treeNode.left != null) { ((LinkedList<TreeNode>)queue).add(treeNode.left); } if (treeNode.right != null) { ((LinkedList<TreeNode>)queue).add(treeNode.right); } } } return result; } }
解题思想:借助队列先进先出特性,层序遍历