树(6)二叉树层序遍历

Q:
给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)

例如:
给定的二叉树是{3,9,20,#,#,15,7},
3
/
9 20
/
15 7

该二叉树层序遍历的结果是
[
[3],
[9,20],
[15,7]
]

A:

  • 原料:大结果集(二维数组=每层的结果集+深度/数组元素下标)、层数(初始化为0)、给定的二叉树,每层的结果集(每层的值)
  • 临界点:给定的为NULL,返回空数组;

使用一个变量level来标记当前的深度,初始化带入0,表示根结点所在的深度。

由于需要返回的是一个二维数组res,开始时我们又不知道二叉树的深度,不知道有多少层,所以无法实现申请好二维数组的大小,只有在遍历(level+1)的过程中不断的增加。

那么我们什么时候该申请新的一层了呢,当level等于二维数组的大小我们新建一个空层,继续往里面加数字

为什么不是level大于长度?
答:孩子的level+1的确比父节点的level大1,但是数组的长度并不等于父节点的level,它们的关系是size=父.level+1

孩子的(level+1)-1=父亲的level=size-1
level+1是新的level,那么level=size

综上,已经遍历的层数比深度大1。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值