二叉排序树的最低公共祖先

接着上面一篇文章。那么如果该二叉树是BST呢?可以利用BST的性质。这题也假设这两个节点同时存在。http://www.360doc.com/content/06/1023/15/11192_238001.shtml

“从根结点出发,沿着两个给定结点的公共祖先前进。当这两个结点的值同时小于当前结点的值时,沿当前结点的左指针前进;当这两个结点的值同时大于当前结点的 值时,沿当前结点的右指针前进;当第一次遇到当前结点的值介于两个给定的结点值之间的情况时,这个当前结点就是我们要找的最的最低公共祖先了。”

int FindLowestCommonAncestor(node *root, int value1, int value2)
{
	node *curnode = root;
	while(1)
	{
		if (curnode->data>value1&&curnode->data>value2)
			curnode = curnode->left;
		else if(curnode->data<value1&&curnode->data<value2)
			curnode = curnode->right;
		else
			return curnode->data;
	}
}

  

posted @ 2013-08-19 23:23  阿牧遥  阅读(310)  评论(0编辑  收藏  举报