二叉排序树的最低公共祖先
接着上面一篇文章。那么如果该二叉树是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; } }