把二叉树打印成多行

    技术2026-06-04  15

    题目描述

    从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。

    解题思路:

    利用队列来进行实现,首先要知道队列的方法

    下表显示了jdk1.5中的阻塞队列的操作:

    arraylist的方法

            add        增加一个元索                     如果队列已满,则抛出一个IIIegaISlabEepeplian异常   remove   移除并返回队列头部的元素    如果队列为空,则抛出一个NoSuchElementException异常   element  返回队列头部的元素             如果队列为空,则抛出一个NoSuchElementException异常

    linkedlist的方法   offer       添加一个元素并返回true       如果队列已满,则返回false   poll         移除并返问队列头部的元素    如果队列为空,则返回null   peek       返回队列头部的元素             如果队列为空,则返回null

      put         添加一个元素                      如果队列满,则阻塞   take        移除并返回队列头部的元素     如果队列为空,则阻塞  

    import java.util.ArrayList; import java.util.Queue; 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 { ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> List = new ArrayList<ArrayList<Integer> >(); Queue <TreeNode> queue = new LinkedList<> (); if(pRoot==null) return List; queue.offer(pRoot); while(!queue.isEmpty()) { int size=queue.size(); ArrayList<Integer> list = new ArrayList<>(); while(size>0) { TreeNode node = queue.poll(); list.add(node.val); if(node.left!=null) queue.offer(node.left); if(node.right!=null) queue.offer(node.right); size--; } List.add(list); } return List; } }

     

    Processed: 0.017, SQL: 9