高級(jí)數(shù)據(jù)結(jié)構(gòu)和算法2:樹的表示法

在大部分OJ題目中,節(jié)點(diǎn)個(gè)數(shù)n作為參數(shù)傳入划栓。所以溪厘,比較適合使用采用一組連續(xù)的空間來存儲(chǔ)每個(gè)結(jié)點(diǎn),即Node nodes[n]合搅。

1. 多叉樹表示法

1.1 雙親表示法

  • 表格表示


  • 參考代碼

    struct Node{
       char data;
       int parent; 
    };
    
    Node nodes[n];
    
  • 優(yōu)缺點(diǎn)
    比較容易找到雙親多搀,但是不容易找到孩子。

2.2 孩子表示法

  • 表格表示


  • 參考代碼

    struct Node{
       char data;
       vector<int> children; 
    };
    
    Node nodes[n];
    
  • 優(yōu)缺點(diǎn)
    比較容易找到孩子灾部,但是不容易找到雙親康铭。

優(yōu)化:雙親孩子表示法

  • 表格表示


  • 參考代碼
    struct Node{
       char data;
       int parent; 
       vector<int> children; 
    };
    
    Node nodes[n];
    
  • 優(yōu)缺點(diǎn)
    雙親孩子都比較容易找到。

1.3 孩子兄弟表示法

  • 表格表示


  • 參考代碼
    struct Node{
       char data;
       int firstchild;
       int rightsib; 
    };
    
    Node nodes[n];
    
  • 優(yōu)缺點(diǎn)
    比較容易找到孩子和兄弟赌髓,但是不容易找到雙親从藤。

孩子兄弟表示法主要用來把多叉樹轉(zhuǎn)化成二叉樹。

練習(xí)
顯示樹結(jié)構(gòu)GraphvizOnline

graph G {
A--B
A--C
B--D
C--E
C--F
D--G
D--H
D--I
E--J
}

2 二叉樹表示法

2.1 順序存儲(chǔ)方式

將二叉樹存儲(chǔ)在一個(gè)數(shù)組中锁蠕,通過存儲(chǔ)元素的下標(biāo)反映元素之間的父子關(guān)系夷野。用一組連續(xù)地址的存儲(chǔ)空間依次自上而下、自左到右存儲(chǔ)二叉樹上的節(jié)點(diǎn)荣倾。

  • 一棵深度為k的二叉樹通常需要2^k-1個(gè)節(jié)點(diǎn)空間存儲(chǔ)悯搔。
  • 節(jié)點(diǎn)之間的關(guān)系根據(jù)二叉樹的性質(zhì)5確定。
No. 節(jié)點(diǎn) 下標(biāo)
1 根節(jié)點(diǎn) 1
2 葉子節(jié)點(diǎn)i 2i>2^k-1
3 節(jié)點(diǎn)i的父節(jié)點(diǎn) i/2
4 節(jié)點(diǎn)i的左孩子節(jié)點(diǎn) 2i
5 節(jié)點(diǎn)i的右孩子節(jié)點(diǎn) 2i+1
  • 通常使用0表示空節(jié)點(diǎn)舌仍。

結(jié)點(diǎn)個(gè)數(shù)已知的完全二叉樹或接近完全二叉樹的二叉樹妒貌,通常使用這種方式者娱。最壞情況為深度為k且只有k個(gè)節(jié)點(diǎn)的單支數(shù)。

2.2 鏈?zhǔn)酱鎯?chǔ)方式

因?yàn)轫樞虼鎯?chǔ)存在的局限性苏揣,二叉樹比較常見的是鏈?zhǔn)酱鎯?chǔ)方式。由于二叉樹結(jié)構(gòu)簡(jiǎn)單推姻,通常使用孩子表示法平匈,或者孩子雙親表示法。


二叉樹的二叉鏈表.png
  • 孩子表示法
    struct Node{
      char data;
      struct Node* right_child;
      struct Node*left_child;
    };
    
    Node* head;
    
  • 孩子雙親表示法
    struct Node{
      char data;
      struct Node* right_child;
      struct Node* left_child;
      struct Node* parent;
    };
    
    Node* head;
    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末藏古,一起剝皮案震驚了整個(gè)濱河市增炭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拧晕,老刑警劉巖隙姿,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異厂捞,居然都是意外死亡输玷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門靡馁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來欲鹏,“玉大人,你說我怎么就攤上這事臭墨∨夂浚” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵胧弛,是天一觀的道長尤误。 經(jīng)常有香客問我,道長结缚,這世上最難降的妖魔是什么损晤? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮红竭,結(jié)果婚禮上沉馆,老公的妹妹穿的比我還像新娘。我一直安慰自己德崭,他們只是感情好斥黑,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著眉厨,像睡著了一般锌奴。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上憾股,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天鹿蜀,我揣著相機(jī)與錄音箕慧,去河邊找鬼。 笑死茴恰,一個(gè)胖子當(dāng)著我的面吹牛颠焦,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播往枣,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼伐庭,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了分冈?” 一聲冷哼從身側(cè)響起圾另,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雕沉,沒想到半個(gè)月后集乔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡坡椒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年扰路,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倔叼。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡幼衰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缀雳,到底是詐尸還是另有隱情渡嚣,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布肥印,位于F島的核電站识椰,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏深碱。R本人自食惡果不足惜腹鹉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望敷硅。 院中可真熱鬧功咒,春花似錦、人聲如沸绞蹦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幽七。三九已至景殷,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猿挚。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工咐旧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绩蜻。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓铣墨,卻偏偏與公主長得像,于是被迫代替她去往敵國和親办绝。 傳聞我的和親對(duì)象是個(gè)殘疾皇子伊约,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容