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