【二叉树4】层序遍历

按照每一层的遍历输出,使用队列完成遍历。最终输出应该是二维数组。

队列中每次进入当前弹出的根节点的左右子节点,并且另找一个计数器,记录每层节点个数,以保证弹出时有约束。

1.递归法

设计一个列表用来存放一整个层的节点reslist,再设计一个列表作为reslist的子列表,作为矩阵的行,当当前深度deep超过了reslist的大小时,子列表作为整体加入reslist。

  • 根节点的深度为 0: 树的最顶层是根节点,其深度为 0。
  • 子节点的深度为父节点深度加 1: 如果一个节点的深度为 d,那么它的子节点的深度为 d + 1。

代码解析:

这个循环过程应该是直接得到一个二维数组reslist里面存放的就是整个二叉树的值组成的二维数组,每一行代表每一层。那么它的循环过程其实就是输入当前层的所有节点,每输入一个deep就作为计数器进行+1的过程,有几个check本层就应该有加了多少次deep,如果当前的reslist存储的元素的个数是小于deep的,就依次添加item,每个item都是一个节点的结构体。

2.迭代法

用队列存放每一层的节点,队列中放入的就是当前深度也就是当前层的所有节点。

另一种写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mmm`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值