最近我遇到了这个采访难题。 有人可以解释一下这个难题意味着什么......
您将获得一棵二叉树。光源位于树的右侧。打印光线直接落在其上的所有节点的列表。
哪些节点将被屏蔽?很明显,正确的节点会被打印,但如果左子树更大,那么我们必须包含几个额外的测试用例,对吧?
纠正我,如果我错了!
答案 0 :(得分:3)
你是对的。应该打印最右边的子树,并且可能打印左侧子树中的树的一些节点。实际上,应该打印树的每个级别的最右边节点。在以下示例中,标有x
的节点应为输出
x
/ \
o x
/ \
o x
你可以通过递归回溯来实现这一点,通过遍历树并始终采用正确的路径并打印出你遍历的节点。
如果你带着任何孩子到达一个节点,你会回到父节点并继续它的左边路径,直到你达到比以前更深的水平(这里你再开始打印它们),或直到你到达一个没有孩子的节点。
如果您重新进行此操作,您最终将获得光线所触及的所有节点