就是二叉树的层次遍历,使用一个队列来维持。
实现代码:
import java.util.*; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ public class Solution { ArrayList<Integer> ret; Queue<TreeNode> queue; public Solution() { ret = new ArrayList<Integer>(); queue = new LinkedList<TreeNode>(); } public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { if(root == null) return ret; queue.offer(root); while(!queue.isEmpty()) { TreeNode node = queue.poll(); ret.add(node.val); //左子节点入队 if(node.left != null) { queue.offer(node.left); } //右节点入队 if(node.right != null) { queue.offer(node.right); } } return ret; } }
吐槽一下:牛客网的代码模板和后台调用写的真烂。