我从朋友的采访中得到了这个问题:给定一棵二叉树,从靠近树中间的所有级别打印节点数组(最多两个节点)。这是一个例子:
1输出是
/ \
2 3
/ \ \
4 5 9
/
10
[ [2,3], [5,9], [10] ]
。我只能想到一个低效的方法:对树进行级别排序,对于每个级别,将当前级别的所有节点放入一个数组中,如果节点是
NULL
,则将一个标志(可能是 -1 或其他)放入插槽中。最后,打印出每个数组中间的所有节点。对于上面的例子,我的代码将首先得到 4 个数组:
[1], [2,3], [4,5,-1,9],[-1,-1,10,-1]
,在这个过程之后,打印出数组中所有不是 -1 的中间值。我相信必须存在更好的解决方案,有人可以提供吗?谢谢!