这是一个受欢迎的面试问题,我唯一可以找到的有关该主题的文章是TopCoder的文章。对我来说不幸的是,从访谈答案的角度来看,它看起来过于复杂。
除了绘制到两个节点的路径并推导祖先之外,没有其他更简单的方法了吗?(这是一个很流行的答案,但是面试题有一个变体,要求一个固定的空格答案)。
恒定空间答案:(尽管不一定有效)。
有一个函数findItemInPath(int index,int searchId,Node root)
然后从树的0 ..深度进行迭代,在两个搜索路径中找到第0个项目,第1个项目等。
当您发现i使得函数对两个函数都返回相同的结果,但对i + 1却返回不相同时,则路径中的第i个项目是最低的共同祖先。