之字形层序遍历:从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行。

广度优先搜索,在二叉树的层序遍历的基础上需要增加一些变化。

普通广度优先搜索只取一个元素,变化后的广度优先搜索每次取出第 i 层上所有元素。

新增一个变量 odd,用于判断当前层数是奇数层,还是偶数层。从而判断元素遍历方向。

存储每层元素的 level 列表改用双端队列,如果是奇数层,则从末尾添加元素。如果是偶数层,则从头部添加元素。

当队列不为空时,求出当前队列长度 $s_i$,并判断当前层数的奇偶性。

如果为奇数层,如果是奇数层,则从 level 末尾添加元素。

如果是偶数层,则从 level头部添加元素。

然后保存将其左右子节点入队,然后继续迭代。