题目:从上往下打印二叉树
题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印
思路:考察二叉树的 层序遍历,通常借助使用一个队列或一个栈来完成
若是要求每层数据从左到右保存则用队列,若是要求每层数据从右到左保存则用栈(这种要求一般出现在“之”字型遍历 二叉树的题上)
题目本身好像要求只能用ArrayList,我这里直接用队列解了
1 import java.util.ArrayList; 2 import java.util.LinkedList; 3 import java.util.Queue; 4 /** 5 public class TreeNode { 6 int val = 0; 7 TreeNode left = null; 8 TreeNode right = null; 9 10 public TreeNode(int val) { 11 this.val = val; 12 13 } 14 15 } 16 */ 17 public class Solution { 18 public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { 19 ArrayList<Integer>list=new ArrayList<>(); 20 Queue<TreeNode>queue=new LinkedList<>(); 21 if(root==null)return list; 22 queue.offer(root); 23 while(!queue.isEmpty()){ 24 TreeNode tmp=queue.poll(); 25 if(tmp.left!=null)queue.offer(tmp.left); 26 if(tmp.right!=null)queue.offer(tmp.right); 27 list.add(tmp.val); 28 } 29 return list; 30 } 31 }
当然,直接用一个ArrayList模仿队列也可以的
1 import java.util.ArrayList; 2// 用arraylist模拟一个队列来存储相应的TreeNode 3 4 public class Solution { 5 public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { 6 ArrayList<Integer> list = new ArrayList<>(); 7 ArrayList<TreeNode> queue = new ArrayList<>(); 8 if (root == null) { 9 return list; 10 } 11 queue.add(root); 12 while (queue.size() != 0) { 13 TreeNode temp = queue.remove(0); 14 if (temp.left != null){ 15 queue.add(temp.left); 16 } 17 if (temp.right != null) { 18 queue.add(temp.right); 19 } 20 list.add(temp.val); 21 } 22 return list; 23 } 24 }
原文地址:https://www.cnblogs.com/pathjh/p/9172988.html
时间: 2024-11-05 18:46:44