在二进制搜索树中查找最低公祖的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 小侄过生日祝福语简短
11 小店营业的祝福语简短
12 担任老师的祝福语简短
13 饮料吧台祝福语简短大气
14 公司新春搞笑祝福语简短
15 高情商敬酒祝福语简短
16 婚礼祝福语新郎妹妹简短
17 教师答辩通过祝福语简短
18 生女孩红包简短祝福语