二叉树拼图

时间:2015-02-26 21:16:40

标签: algorithm binary-tree puzzle

最近我遇到了这个采访难题。 有人可以解释一下这个难题意味着什么......

您将获得一棵二叉树。光源位于树的右侧。打印光线直接落在其上的所有节点的列表。

哪些节点将被屏蔽?很明显,正确的节点会被打印,但如果左子树更大,那么我们必须包含几个额外的测试用例,对吧?

纠正我,如果我错了!

1 个答案:

答案 0 :(得分:3)

你是对的。应该打印最右边的子树,并且可能打印左侧子树中的树的一些节点。实际上,应该打印树的每个级别的最右边节点。在以下示例中,标有x的节点应为输出

    x
   / \
  o   x
 / \
o   x

你可以通过递归回溯来实现这一点,通过遍历树并始终采用正确的路径并打印出你遍历的节点。

如果你带着任何孩子到达一个节点,你会回到父节点并继续它的左边路径,直到你达到比以前更深的水平(这里你再开始打印它们),或直到你到达一个没有孩子的节点。

如果您重新进行此操作,您最终将获得光线所触及的所有节点