溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

樹存儲結(jié)構(gòu)的幾種表示方法

發(fā)布時間:2020-09-06 08:41:18 來源:腳本之家 閱讀:206 作者:BLSxiaopanlaile 欄目:編程語言

名稱:樹存儲結(jié)構(gòu)的幾種表示方法

說明:對于樹的存儲結(jié)構(gòu),一般有以下三種表示方法。

  • (1)、雙親表示法。這種存儲方式采用一組連續(xù)的空間來存儲每個結(jié)點,同時在每個結(jié)點中增設(shè)一個偽指針,
  • 指示其雙親在結(jié)點中的位置。這種方式比較容易找到雙親,但是不容易找到孩子。
  • (2)、孩子表示法。這種方法是將每個結(jié)點的孩子結(jié)點都用鏈表鏈接起來形成一個線性結(jié)構(gòu)。這種方式比較
  • 容易找到結(jié)點的孩子,但是不容易找到其雙親。
  • (3)、孩子兄弟表示法。這種方式通俗的說是:“左結(jié)點是第一個孩子,右結(jié)點是下一個兄弟”。這種方式比較靈活,因為其可以轉(zhuǎn)化為二叉樹,對其的操作一般都能轉(zhuǎn)化為二叉樹的相關(guān)操作。

總之,選用不同的存儲結(jié)構(gòu)要根據(jù)具體的用途。(這當(dāng)然是廢話)。想說的是,在做一些題的時候,如果可以不用選用二叉樹這種相對復(fù)雜的存儲結(jié)構(gòu),那就選擇線性的結(jié)構(gòu)。對我來說,線性結(jié)構(gòu)比二維的樹的結(jié)構(gòu)用的順手。

//樹的存儲結(jié)構(gòu)之雙親表示法
//樹的結(jié)點定義
typedef struct
{
  int data;  //數(shù)據(jù)元素
  int parent;   //雙親的位置
}PTNode;
//樹的類型定義
typedef struct
{
  //PTNode nodes[MAXSIZE];   //雙親表示
  int n;         //結(jié)點數(shù)
}PTree;
//樹的存儲結(jié)構(gòu)之孩子表示法
//鏈表中孩子結(jié)點表示
typedef struct CHNode
{
  int pos;  //孩子的位置
  CHNode *next;  //指向下一個孩子的指針
}CHNode;
//數(shù)組中雙親結(jié)點表示
typedef struct CHNode1
{
  int data;    //數(shù)據(jù)元素
  CHNode *firChild;  //指向第一個孩子的指針
}CHNode1;
//樹的類型表示
typedef struct
{
  CHNode1 nodes[MAXSIZE];   //所有的結(jié)點
  int n;   //節(jié)點的個數(shù)
}CHTree;
//樹的存儲結(jié)構(gòu)之孩子兄弟表示法
typedef struct CSNode
{
  int data;  //結(jié)點的數(shù)據(jù)
  CSNode *firstchild,*nextbling;  //第一個孩子和下一個兄弟
}CSNode,*CSTree;

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對億速云的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI