版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
27.从上往下打印二叉树(层次遍历)(171)
-
题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
-
代码:
package _28.从上往下打印二叉树; import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /** * 题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。 * @author Administrator * */ public class PrintFromTopToBottom { public ArrayList<Integer> printFromTopToBottom(TreeNode root) { ArrayList<Integer> list = new ArrayList<>(); if(root == null) return list; //利用队列来保存根元素,以便按顺序访问其孩子节点 Queue<TreeNode> queue = new LinkedList<>(); TreeNode node = root; queue.add(node); while(!queue.isEmpty()){ node = queue.remove(); list.add(node.val); if(node.left != null){ queue.add(node.left); } if(node.right != null){ queue.add(node.right); } } return list; } public static void main(String[] args) { TreeNode root = new TreeNode(0); TreeNode node1 = new TreeNode(1); TreeNode node2 = new TreeNode(2); TreeNode node3 = new TreeNode(3); TreeNode node4 = new TreeNode(4); root.left = node1; root.right = node2; node1.left = node3; node1.right = node4; PrintFromTopToBottom print = new PrintFromTopToBottom(); ArrayList<Integer> list = print.printFromTopToBottom(root); System.out.println(list); } } class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } }