家族樹演算法
A. 家族樹是什麼玩意與家譜有關系么能不能尋到根啊
我在網上找到一些資料,或許能幫到您
家族網是基於個人、家庭、家族的互動性文化網站,主要為全球華人提供姓氏尋根、在線家譜、家族互動、家庭教育、發現中國(文化資訊)等。
家族網屬於一個多功能互動文化社區,主要服務產品是家族樹,家族樹支持注冊用戶建立數字家譜,包括邀請家族人員進入家族樹進行協作管理,家族成員在共有的家族空間一起體驗娛樂互動應用,而且家族樹還有尋根輔助功能,根據你填寫的信息,自動匹配可能會是你家族成員的人。家族網還有群組、博客、相冊、檔案館、姓氏網路、時間軸等多種功能。這些功能和應用使家族樹中的成員有良好的互動性,增加親人感情和家庭溫情。
B. c語言 二叉樹的應用---家族族譜模擬
用樹的遍歷演算法,加if(data==data1)確認查找
if裡面是對樹的操作,
專業的,還是自己打代碼比較好
C. 什麼是家族樹
家族樹,是指利用互聯網技術,依據血緣關系或親祖關系把人聯系起來,再按照輩份排序構成樹的模型。 在樹中的成員可以清楚的知道自己的家族起源、家族關系以及其他成員的基礎信息,並且享有記錄、分享等溝通娛樂服務。
家族樹的作用和意義
家族樹,是一種家庭文化的工具。它的形式和范圍,主要是 家族網·家族樹
針對中國人的家庭觀念以及對自身姓氏認同的需要,它的功能涵蓋了家庭生活記錄、教育、家族文化傳承、觀念等各個方面。作為家庭中必備的文化工具手冊,家族樹能幫助記錄著真實的記載自己和家庭較長時期內所發生的一切事情。尤其是記錄人生歷經滄桑、拼搏不息直至輝煌的真實寫照,既可以作為自己美好的回憶,又可以傳承激勵後人。 在傳統的中國家庭里,都持有認祖歸宗的思想,而編纂家譜無論在信息源還是操作中都是一個浩大的工程。家族樹藉助於互聯網,輕松的解決了這個問題,並且可以通過分享、收藏等多種互動行為與家族人溝通、交流。
追祖溯源
D. 如何創建家族樹
你提到的是指在家族網建立家族樹嗎?
家族網創建家族樹很簡單,直接進入家族網的登錄頁面,注冊帳號之後就會出現屬於你的家族樹,用戶根據自己的家庭構成來完善家族樹上的資料,
家族樹上的成員可以自己添加和更改,同時只要是同一棵家族樹上的成員都可以對樹進行共同的管理!
用戶在家族網建立自己的家族樹後,就相當於擁有了一個自己的在線家庭!
E. 具有三個節點的二叉樹有幾種形態哪幾種
有三種形態,分別是:
1、完全二叉樹:
若設二叉樹的高度為h,除第 h 層外,其它各層 (1~h-1) 的結點數都達到最大個數,第h層有葉子結點,並且葉子結點都是從左到右依次排布,這就是完全二叉樹。
2、滿二叉樹:
除了葉結點外每一個結點都有左右子葉且葉子結點都處在最底層的二叉樹。
3、平衡二叉樹:
平衡二叉樹又被稱為AVL樹(區別於AVL演算法),它是一棵二叉排序樹,且具有以下性質:它是一棵空樹或它的左右兩個子樹的高度差的絕對值不超過1,並且左右兩個子樹都是一棵平衡二叉樹。
(5)家族樹演算法擴展閱讀:
相關術語
1、樹的結點:包含一個數據元素及若干指向子樹的分支;
2、孩子結點:結點的子樹的根稱為該結點的孩子;
3、雙親結點:B 結點是A 結點的孩子,則A結點是B 結點的雙親;
4、兄弟結點:同一雙親的孩子結點; 堂兄結點:同一層上結點;
5、祖先結點: 從根到該結點的所經分支上的所有結點
6、子孫結點:以某結點為根的子樹中任一結點都稱為該結點的子孫
7、結點層:根結點的層定義為1;根的孩子為第二層結點,依此類推;
8、樹的深度:樹中最大的結點層
9、結點的度:結點子樹的個數
10、樹的度: 樹中最大的結點度。
11、葉子結點:也叫終端結點,是度為 0 的結點;
12、分枝結點:度不為0的結點;
13、有序樹:子樹有序的樹,如:家族樹;
14、無序樹:不考慮子樹的順序;
F. 請好心人幫忙用C數據結構做一個程序實現二叉家族樹的建立與輸出
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MaxWidth 40
#define MaxSize 30
typedef struct treenode
{
char name[10];
struct treenode *left,*right;
} *BTree;
BTree findfather(BTree p,char xm[])
{
BTree bt;
if(p==NULL) return(NULL);
else
{
if(strcmp(p->name,xm)==0)
return(p);
else
{
bt=findfather(p->left,xm);
if(bt!=NULL) return(bt);
else return(findfather(p->right,xm));
}
}
}
BTree creatree()
{
int n,m,i,contin=1,first=1;
char xm[10];
BTree btree,s,t,p;
printf("\n建立一個家譜二叉樹(以空格結尾):\n");
while(contin)
{
if(first==1)
{
btree=(BTree)malloc(sizeof(struct treenode));
printf("\t姓名:");
gets(btree->name);
btree->right=NULL;
s=(BTree)malloc(sizeof(struct treenode));
printf("\t妻子:");
gets(s->name);
s->left=s->right=NULL;
btree->left=s;
first=0;
}
else
{
printf("\t父親:");
gets(xm);
if(strcmp(xm," ")==0)
contin=0;
else
{
p=findfather(btree,xm);
if(p!=NULL)
{
p=p->left;
if(p==NULL) /*沒有妻子*/
printf("\t沒有兒子(因為沒有妻子)\n");
else
{
while(p->right!=NULL) p=p->right;
s=(BTree)malloc(sizeof(struct treenode));
s->right=NULL;
p->right=s;
printf("\t兒子:");
gets(s->name);
printf("\t兒妻:");
gets(xm);
if(strcmp(xm,"")!=0)
{
t=(BTree)malloc(sizeof(struct treenode));
strcpy(t->name,xm);
t->left=t->right=NULL;
s->left=t;
}
else s->left=NULL;
}
}
else printf("不存在這樣的父結點!\n");
}
}
}
return(btree);
}
void disptree(BTree BT)
{
BTree stack[MaxSize],p;
int level[MaxSize][2],top,n,i,width=4;
if(BT!=NULL)
{
printf("\n家譜凹入表示法:\n");
top=1;
stack[top]=BT; /*根結點入棧*/
level[top][0]=width;
while (top>0)
{
p=stack[top]; /*退棧並凹入顯示該結點值*/
n=level[top][0];
for (i=1;i<=n;i++) /*其中n為顯示場寬,字元以右對齊顯示*/
printf(" ");
printf("%6s",p->name);
for(i=n+1;i<=MaxWidth-6;i+=2)
printf("━");
printf("\n");
top--;
if(p->right!=NULL)
{ /*將右子樹根結點入棧*/
top++;
stack[top]=p->right;
level[top][0]=n+width; /*顯示場寬增width*/
level[top][1]=2;
}
if (p->left!=NULL)
{ /*將左子樹根結點入棧*/
top++;
stack[top]=p->left;
level[top][0]=n+width; /*顯示場寬增width*/
level[top][1]=1;
}
}
}
}
void findson(BTree bt)
{
char xm[10];
BTree p;
printf("\n查找指定父親的所有兒子\n");
printf("父親:");
gets(xm);
p=findfather(bt,xm);
if(p==NULL)
printf("不存在%s的父親!\n",xm);
else
{
p=p->left;
p=p->right;
if(p==NULL)
printf("%s沒有兒子!\n",xm);
else
{
printf("%s有以下兒子!\n\t");
while(p!=NULL)
{
printf("%8s ",p->name);
p=p->right;
}
}
}
}
main()
{
BTree bt;
bt=creatree();
disptree(bt);
findson(bt);
}
G. 家族樹是由什麼組成的
人和關系組成的。
人即樹葉,關系即樹狀結構。
代表網站是:家族網
H. 數據結構與演算法中,樹一般會應用在哪些方面為什麼
數據結構就不多說了,樹以遞歸性質這一對計算機而言最普遍的描述結構簡直貫穿始終。查找樹字典樹四叉樹哪個都是樹的實際應用。除了低維結構不用樹描述(其實一維結構也可以看成是退化後的樹)。
演算法層面,樹基本上到處都是(當然有些時候是隱性的)。計算機執行指令是線性的,程序代碼也是順序的,是個一維結構,一旦需要解決高維問題,利用棧、隊列等一維基礎結構所能做到的只有樹,而樹則可以用來描述高維邏輯,起到了個橋梁作用。
演算法舉例如下。
狀態空間遍歷類:DFS、BFS
決策類:各種自動機(特例還有退化為一位情況的KMP)、貪心、分治、動態規劃(同屬狀態空間遍歷)、匹配
圖與流:尋路(最短路)、生成樹
應用舉例就更多了,例如XML、DOM樹、編譯器中的模式識別和語法樹、JSON數據傳遞、磁碟路徑結構……
樹的普遍取決於它的結構與通常解決問題的演算法的一致性和結構簡單嚴謹:遞歸定義、拓撲有序(無環)、實現簡單。當面臨高維狀態時,其它結構的處理方式幾乎一定不如轉化為樹來的簡單,所以就成為了組織一維實現與高維邏輯中的橋梁。
I. 家族樹是什麼意思
家族樹,是指利用互聯網技術,依據血緣關系或親祖關系把人聯系起來,再按照輩份排序構成樹的模型。
在樹中的成員可以清楚的知道自己的家族起源、家族關系以及其他成員的基礎信息,並且享有記錄、分享等溝通娛樂服務。
J. 家族樹的功能作用
家族樹是專門為家庭提供的溝通、娛樂、分享的平台,家庭成員可以通過這棵樹實現各種操作。
族譜管理
首先可以建立直觀的家族樹自動生成族譜。用戶可以自主管理家族樹進行添加、刪除人員,並運用日歷的輔助功能記錄家庭節日、生日、紀念日等。最終導出,可形成自己的文字家譜。
自動匹配
家族樹里有一定的成員後,會自動識別判斷兩棵樹之間是否有親戚、宗族關系。如果符合宗族關系,兩棵樹就可以建立關系,最後形成一個大的家族,家族裡包含有家庭。比如:我建立了自己的家族樹並且添加了父母、爺爺、奶奶的信息。我的堂兄也建立了自己的家族樹並添加了相關信息。我和堂兄的爺爺、奶奶是共同的,根據這個關系,家族樹會自動建立兩棵樹的關系並提示是否合並為一棵樹。
家庭溝通
家族樹有即時聊天、家庭日誌、家庭祝福等互動功能。在一棵樹或者有聯系的樹里,成員們可以暢談家事、國事、天下事。也可以通過家庭日誌的形式寫一篇文章給大家或者指定人士分享。現代家庭多出現代溝或者矛盾,多數都是因為不能夠互相理解而造成的。基於這一點,家族樹提供了多種溝通的表達的方式,具體還要靠大家在使用的過程中慢慢發現。
其他服務
家族樹還提供圖片分享、家族禮物、家庭教育、家庭活動、音樂、空間等多種互動功能。更多適用於家庭的體驗服務,還有待於網友反饋、添加。