import java.util.ArrayList; 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) { ArrayList<Integer> list =new ArrayList<>(); //空格的情况直接返回 if(root == null){ return list; } LinkedList<TreeNode> mas =new LinkedList<>(); //压入主队列根节点 mas.add(root); while(!mas.isEmpty()){ //每一次循环,将当前节点的子节点加到队列的尾部。 while(!mas.isEmpty()){ TreeNode node = mas.pop(); list.add(node.val); if(node.left != null){ mas.add(node.left); } if(node.right != null){ mas.add(node.right); } } } return list; } }
import java.util.ArrayList; 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) { ArrayList<Integer> list =new ArrayList<>(); //空格的情况直接返回 if(root == null){ return list; } //主队列和辅助队列 LinkedList<TreeNode> mas =new LinkedList<>(); LinkedList<TreeNode> fz =new LinkedList<>(); //压入主队列根节点 mas.add(root); while(!mas.isEmpty()){ //每一次循环,将主队列代表的一行记录加到list中,并将下一行记录到辅助队列 while(!mas.isEmpty()){ TreeNode node = mas.pop(); list.add(node.val); if(node.left != null){ fz.add(node.left); } if(node.right != null){ fz.add(node.right); } } //将辅助队列的一行记录加到主队列中 while(!fz.isEmpty()){ mas.add(fz.pop()); } } return list; } }
原文:https://www.cnblogs.com/MoonBeautiful/p/13055394.html