关于二叉树的按层打印

来源:互联网 发布:星星点灯 知乎 编辑:程序博客网 时间:2024/05/08 00:28
本文的思路来自于牛客网左程云大大的二叉树视频
视频地址
http://www.nowcoder.com/courses/1/1/1

题目要求如下:


至于算法分析,大家看视频吧,左老大讲的肯定比我清楚,下面是我实现的代码


class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}public class Solution {public static void main(String[] args) {TreeNode t1=new TreeNode(1);TreeNode t2=new TreeNode(2);TreeNode t3=new TreeNode(3);TreeNode t4=new TreeNode(4);TreeNode t5=new TreeNode(5);TreeNode t6=new TreeNode(6);TreeNode t7=new TreeNode(7);TreeNode t8=new TreeNode(8);t1.left=t2;  t1.right=t3;t2.left=t4;  t3.left=t5; t3.right=t6;t5.left=t7;  t5.right=t8;new Solution().printFromTopToBottom(t1);}    public ArrayList<Integer> printFromTopToBottom(TreeNode root) {    ArrayList<Integer> list=new ArrayList<Integer>();    Queue <TreeNode> queue=new ArrayBlockingQueue<>(100);    TreeNode last=root;     //当前行的最后节点    TreeNode nLast=root;    //下一行的最右节点    queue.add(root);            while (!queue.isEmpty()) {TreeNode out=queue.poll();System.out.print(out.val+" "); list.add(out.val);if (out.left!=null) {queue.add(out.left);nLast=out.left;}if (out.right!=null) {queue.add(out.right);nLast=out.right;}if (out==last) {System.out.println("");last=nLast;}}    return list;    }}

0 0
原创粉丝点击