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。