题目描述
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
方法一、队列的特性和一个存储每一行元素的数组
分析:
与“按之字形顺序打印二叉树”类似,但是不能用栈来实现。
队列:
add:从队列 尾部加人一个元素,
remove: 从队列头部移除一个元素
/**
* 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。
* 思路: * 按层次输出二叉树 * 访问根节点,并将根节点入队。
* 当队列不空的时候,重复以下操作。
* 1、弹出一个元素。作为当前的根节点。
* 2、如果根节点有左孩子,访问左孩子,并将左孩子入队。
* 3、如果根节点有右孩子,访问右孩子,并将右孩子入队。
*/
核心代码:
从队列头移除一个元素,并把该元素赋值给临时节点变量temp。通过temp操作下一层的节点
TreeNode temp = queue.remove();
arrayList.add(temp.val); //添加到本行的arrayList
ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
ArrayList&l