在二进制搜索树中查找最低公祖的C ++程序
具有最多两个子代的二叉树,分别指定为左子代和右子代。这是一个C++程序,用于在二叉树中找到最低的公共祖先。
算法
Begin Create a structure n to declare data d, a left child pointer l and a right child pointer r.
Create a function to create newnode. Call a function LCA() to Find lowest common ancestor in a binary tree:
Assume node n1 and n2 present in the tree.
If root is null, then return.
If root is not null there are two cases.
a) If both n1 and n2 are smaller than root, then LCA lies in left.
b) If both n1 and n2 are greater than root, then LCA lies in right.
End.范例程式码
#include<iostream>
using namespace std;
struct n {
int d;
struct n* l, *r;
}*p = NULL;
struct n* newnode(int d) {
p = new n;
p->d= d;
p->l = p->r = NULL;
return(p);
}
struct n *LCA(struct n* root, int n1, int n2) {
if (root == NULL)
return NULL;
if (root->d > n1 && root->d > n2)
return LCA(root->l, n1, n2);
if (root->d< n1 && root->d < n2)
return LCA(root->r, n1, n2);
return root;
}
int main() {
n* root = newnode(9);
root->l = newnode(7);
root->r = newnode(10);
root->l->l = newnode(6);
root->r->l= newnode(8);
root->r->r = newnode(19);
root->r->l->r = newnode(4);
root->r->r->r = newnode(20);
int n1 = 20, n2 = 4;
struct n *t = LCA(root, n1, n2);
cout<<"最低共同祖先20和4是:" <<t->d<<endl;
n1 = 7, n2 = 6;
t = LCA(root, n1, n2);
cout<<"最低共同祖先7和6是:" << t->d<<endl;
}输出结果
最低共同祖先20和4是:9 最低共同祖先7和6是:7
热门推荐
10 高考祝福语 简短12字
11 广东新居入伙简短祝福语
12 亲戚送行祝福语简短精辟
13 租房明天搬家祝福语简短
14 开业祝福语简短大气的
15 送菜的祝福语简短霸气
16 别人怀孕的简短祝福语
17 新年祝福语简短创意兄弟
18 公司个人新年祝福语简短