//
// Created by Mr.Hu on 2018/12/9.
//
// leetcode 107 binary tree level order traversal II
//
// 题目要求对二叉树进行逐层遍历,最终输出的结果为从底到顶每一层的节点,并且要求每一层的节点是从左往右进行输出;
//
// 从这个题目要求的逐层遍历来看,我们可以直接联想到BFS(广度优先搜索),借助数据结构queue(队列)来完成题目要求;
// 但是这里有一个限制要求,就是逐行有区分的输出,而BFS确实是一层一层的输出,却没有对每一行有哪些数据进行区分,
// 所以我们就需要保存每一行的结果,最后输出;而在queue中,每读取一个节点,会将其左右子节点加到队尾,这就导致一个问题,
// 我们如何区分该节点是当前层的节点,还是下一层的节点?
//
// 此时想到了两种方法:第一种,使用两个队列来分别维护当前层的节点和下一层的节点,这就涉及到什么时候用哪一个队列的问题,比较复杂;
// 第二种,用两个int变量分别表示当前层节点的个数和下一层节点的个数,如果在遍历过程中,当前层节点个数减少到0,则说明当前层已经遍历完毕;
// 接下来交换当前层和下一层节点个数,并将当前层节点遍历的集合保存在结果集合中,然后清零,继续上述的循环操作,直到队列中的节点全部遍历完毕。
//
1 |
|