来源公众号:算法面试题
说起二叉树遍历,大家并不陌生,先序遍历、中序遍历、后序遍历、层序遍历等等,在面试过程中,二叉树是许多面试官喜欢问的一个考点,大家需要将二叉树的上述遍历牢记于心。
今天,我们将重点讨论二叉树的层序遍历。
基本的层序遍历
二叉树的层序遍历,又叫广度优先遍历,即对二叉树一层一层地进行遍历,把一层的所有结点遍历完成后,再遍历下一层,如下图的遍历结果为:
1 2 3 4 5 6 7 8 9 10
延伸
然而,面试官在提问时会考察你的知识迁移能力,因此问题往往没有上面说的那样简单。请看下面例子:
由此下面的问题产生了……
问题
(美团一面面试题,来源于leetcode)
给定一个二叉树,返回其节点值的交叉层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。
例如:
给定二叉树 [3,9,20,null,null,15,7]
,
3
/ \
9 20
/ \
15 7
返回结果如下:
[
[3],
[20,9],
[15,7]
]
思考三分钟再往下看效果更佳哦
思路
此题是一道中等难度的题,难点在于如何先从左到右,然后从右到左遍历。我们可以申请两个栈,分别设为