在二进制搜索树中查找最低公祖的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 教师闺蜜祝福语简短