我从我朋友的这个问题采访的中间附近的所有节点:给定一个二叉树,从各级打印节点阵列(最多两个节点)附近树的中间。这里是一个例子:
查找树
1输出是
/\
2 3
/\ \
4 5 9
/
10
[ [2,3], [5,9], [10] ]
。
我只能想到一个效率低下的方法:对于每个级别树级别排序,将当前级别的所有节点放入一个数组中,如果该节点为
NULL
,则将一个标志(可能是-1或sth else)放入该槽中。最后,打印每个阵列中间的所有节点。
对于上面的例子,我的代码将首先得到4个数组:
[1], [2,3], [4,5,-1,9],[-1,-1,10,-1]
,在这个过程之后,打印出数组中不是-1的所有中间值。
我相信必须有更好的解决方案,任何人都可以提供吗?谢谢!
设我问,如果节点10是9的正确孩子,那么第4行的答案仍然是10?因为我不明白为什么你必须将-1放入数组中。 –
@WorakarnIsaratham我很抱歉,我犯了一个错误,它仍然应该是[2,3],[5,9],[10]如果10是9的右子我把-1的原因是刚为纪念空节点,我可以把*或任何其他东西,以纪念插槽 – DoReMi