【发布时间】:2013-06-15 11:59:25
【问题描述】:
我正在编写一个程序,用于在二叉搜索树中查找一对节点的最低共同祖先(假设树中存在元素)。我的逻辑是:
- 从根开始。
- 如果两个元素都大于当前元素,则返回根(这是不同的地方)。
- 否则,如果两者都小于根,则在左子树上递归。
- else 返回根(一个较小,另一个较大)。
但是,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 并且是共同祖先)还是我的算法正确。
【问题讨论】:
标签: algorithm binary-search-tree