我正在编写一个程序,用于在二叉搜索树中查找一对节点的最低共同祖先(假设树中存在元素)。我的逻辑是:
- 从根开始。
- 如果两个元素都大于当前元素,则返回根(这是不同的地方)。
- 否则,如果两者都小于根,则在左子树上递归。
- 否则返回根(一个较小,另一个较大)。
但是,Algos 在网上找到(http://leetcode.com/2011/07/lowest-common-ancestor-of-a-binary-search-tree.html)更改了第 2 步,在这种情况下,它们在右子树上递归,因此对于以下树:
2
/ \
1 4
/ \
3 5
输入 3 和 5,我的算法给出 2,而其他算法给出 4 作为输出。
那么,是我理解 LCA 的定义错误(因为 2 低于 4 并且是共同祖先)还是我的算法正确。