【文章內(nèi)容簡介】
子;如果 2i+1?n, 則其右孩子是 2i+1 二叉樹性質(zhì) ? 雙親表示法 –實現(xiàn):定義結(jié)構(gòu)數(shù)組存放樹的結(jié)點,每個結(jié)點含兩個域: 187。數(shù)據(jù)域:存放結(jié)點本身信息 187。雙親域:指示本結(jié)點的雙親結(jié)點在數(shù)組中位置 –特點: 找雙親容易,找孩子難 typedef struct node { datatype data。 int parent。 }JD。 JD t[M]。 樹的存儲結(jié)構(gòu) a b c d e f h g i a c d e f g h i b 0 1 2 2 3 5 5 5 1 0 9 6 0 1 2 3 4 5 7 8 9 data parent 0號單元不用或 存結(jié)點個數(shù) 如何找孩子結(jié)點 樹的存儲結(jié)構(gòu) ? 孩子表示法 –多重鏈表:每個結(jié)點有多個指針域,分別指向其子樹的根 187。結(jié)點同構(gòu):結(jié)點的指針個數(shù)相等,為 樹的度 D 187。結(jié)點不同構(gòu):結(jié)點指針個數(shù)不等,為該結(jié)點的度 d data child1 child2 ………. childD data degree child1 child2 ………. childd ?孩子鏈表:每個結(jié)點的孩子結(jié)點用單鏈表存儲,再用含 n個元素的結(jié)構(gòu)數(shù)組指向每個孩子鏈表 孩子結(jié)點: typedef struct node { int child。 //該結(jié)點在表頭數(shù)組中下標 struct node *next。 //指向下一孩子結(jié)點 }JD。 表頭結(jié)點: typedef struct tnode { datatype data。 //數(shù)據(jù)域 struct node *fc。 //指向第一個孩子結(jié)點 }TD。 TD t[M]。 //t[0]不用 樹的存儲結(jié)構(gòu) a b c d e f h g i 6 0 1 2 3 4 5 7 8 9 a c d e f g h i b data fc 2 3 ^ 4 5 ^ ^ 9 7 8 ^ 6 ^ ^ ^ ^ ^ 如何找雙親結(jié)點 樹的存儲結(jié)構(gòu) ?帶雙親的孩子鏈表 6 1 2 3 4 5 7 8 9 a c d e f g h i b data fc 2 3