题目描述:给出一棵二叉树,返回其节点值的层次遍历(逐层从左往右访问)
样例:
之前,我们已经学习了用非递归的解法解决二叉树的前序遍历,中序遍历,后序遍历。对于这三种深搜的策略,我采用了一种特殊的结构——栈。其实,我在之前也谈过,一般深搜可以用栈解决,而广搜,是可以用队列解决的,二叉树的层次遍历,就是一种典型的广度优先搜索。当然,关于广度优先搜索其实问题远不止层次遍历这么简单,这个以后会细讲。
看图,层次遍历的顺序在逻辑上是比较简单的,逐层遍历就行:ABCDEFG
根据队列先进先出的性质,层次遍历用队列就特别简单了。下面我来介绍两种方法,分别使用一个及两个队列。
方法一:使用两个队列
这个比较简单,设置两个队列cur_list,next_list分别存储当前需处理的层的节点以及下一层的节点,拿这幅图来说