现在的位置: 首页 > 综合 > 正文

【算法面试题】寻找二叉搜索树中两个节点的最近公共祖先节点

2013年09月02日 ⁄ 综合 ⁄ 共 1939字 ⁄ 字号 评论关闭

算法面试题】寻找二叉搜索树中两个节点的最近公共祖先节点

http://geeksforgeeks.org/?p=1029

 

给定了一个二叉搜索树中任意的两个节点的值,要你写一个c/c++程序,去找到这两个节点的最近公共祖先,你可以假定给定的值存在于二叉树的某个节点中。

 

函数声明:

 

int FindLowestCommonAncestor(node* root, int value1, int value)

 

 

二叉搜索树

 

 输入: 4 和 14
 输出: 8
 (4和14的共同祖先有{8, 20},其中8是最近的公共祖先节点)

算法:

 

基本思想是:给定二叉树中的两个节点n1, n2(假定n1<n2), 其最近的公共祖先节点的值n应该满足 n1<n<n2,所以我们可以前序遍历二叉搜索树,当发现一个节点的值在n1和n2之间时,则此节点为所求节点。如果节点的值大于n1和n2,则所求节点在当前节点的左子树;否则在右子树。

 

抱歉!评论已关闭.