把二叉树打印成多行

本文介绍了两种方法从上到下按层打印二叉树,同一层节点从左至右输出。方法一是使用队列,逐层添加并移除节点;方法二是通过递归,利用前序遍历思想,按层次添加节点到数组。
摘要由CSDN通过智能技术生成

题目描述

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

方法一、队列的特性和一个存储每一行元素的数组

分析:

与“按之字形顺序打印二叉树”类似,但是不能用栈来实现。  

队列: 

add:从队列 尾部加人一个元素,

remove: 从队列头部移除一个元素

/**

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

* 思路: * 按层次输出二叉树 * 访问根节点,并将根节点入队。

* 当队列不空的时候,重复以下操作。

* 1、弹出一个元素。作为当前的根节点。

* 2、如果根节点有左孩子,访问左孩子,并将左孩子入队。

* 3、如果根节点有右孩子,访问右孩子,并将右孩子入队。

*/

核心代码:

从队列头移除一个元素,并把该元素赋值给临时节点变量temp。通过temp操作下一层的节点 

TreeNode temp = queue.remove();
            arrayList.add(temp.val); //添加到本行的arrayList 

 ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) {
        ArrayList&l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值