Java ---小白成长记
【思路】:
通过上面的具体例子分析,可以找到规律:每一次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个队列的尾部。接下来到对队列的头部取出最早进入队列的节点放到ArrayList 中,重复前面的操作,直至队列中所有的节点都存到ArrayList中。
import java.util.ArrayList; import java.util.Deque; import java.util.LinkedList; /** 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) { Deque<TreeNode> deque = new LinkedList<>(); ArrayList<Integer> res = new ArrayList<>(); if(root == null) return res; deque.add(root); while(!deque.isEmpty()){ TreeNode node = deque.getFirst(); deque.pollFirst(); res.add(node.val); if(node.left != null) deque.addLast(node.left); if(node.right != null) deque.addLast(node.right); } return res; } }