二叉树的分层遍历
题目要求:给定一个二叉树的root结点,然后按照每层从左到右的顺序将二叉树结点的值储存在一个二维数组中,每一层一个数组,每一个数组的元素是按照从左到右的顺序进行存储的。
思路:二叉树的分层打印类似于图的广度优先遍历算法,我们可以借助一个队列实现这个过程。
- 初始化队列 将root结点加入到队列之中
- 判断当前队列是否为空
- 不为空,则出队队列的首元素 并且将不为空的结点入队列
- 为空则表示遍历完成
经过上述操作之后就可以得到二叉树分层遍历的顺序了。但是我们并不能得到每一个层都有什么元素这样的信息,我们还需要在遍历的过程中使用变量记录这一个过程。
一个last
变量记录当前打印行的最右结点
一个nLast
变量记录加入队列的最近一个元素
在元素弹出的时候判断一下是否和last
元素相等,相等则表示要换行了,这时候要更新last
的值,就是将nLast
赋值给last
即可,这样就实现了这个功能。
1 |
|