2018-03-28 線索二叉樹

二叉樹鏈表中有很多空指針,比如葉子節(jié)點,會有左右孩子兩個空指針。如何把這些空指針利用起來呢?那就是線索二叉樹

在這些節(jié)點上,可以存儲按照二叉樹某種遍歷順序的前后節(jié)點,這樣就不需要每次都遍歷二叉樹,從而快速點位節(jié)點。

哪一種遍歷順序是最有效的呢?要求是最好有兩個空指針的節(jié)點在非空節(jié)點的中間,這樣就可以記錄前前驅(qū)后繼節(jié)點。?這個遍歷方法叫中序遍歷方法。這樣包含線索的二叉樹,叫做線索二叉樹

線索二叉樹節(jié)點

因為不是所有的節(jié)點都包含兩個空指針,如果只含有一個空指針的時候,就無法判斷,另一個非空指針是指向前驅(qū)或者后繼或者是孩子節(jié)點,所以,在節(jié)點結(jié)構(gòu)中增加2bit,用于指示是指針的類型。

線索二叉樹的實現(xiàn)

首先定義數(shù)據(jù)類型

定義節(jié)點:注意枚舉的使用,默認(rèn)從0開始

只有構(gòu)建了線索二叉樹,才能使用非迭代的方法,通過前驅(qū)和后繼的方法,通過迭代遍歷二叉樹 。

線索二叉樹其實是一個線性雙循環(huán)鏈表,里面有一個很關(guān)鍵的頭結(jié)點,這個是線性表中的結(jié)構(gòu),不同于根節(jié)點

?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 序 2016年6月25日夜,帝都,天下著大雨,拖著行李箱和同學(xué)在校門口照了最后一張合照,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,376評論 0 12
  • 四、樹與二叉樹 1. 二叉樹的順序存儲結(jié)構(gòu) 二叉樹的順序存儲就是用數(shù)組存儲二叉樹。二叉樹的每個結(jié)點在順序存儲中都有...
    MinoyJet閱讀 1,735評論 0 7
  • 樹的概述 樹是一種非常常用的數(shù)據(jù)結(jié)構(gòu),樹與前面介紹的線性表,棧,隊列等線性結(jié)構(gòu)不同,樹是一種非線性結(jié)構(gòu) 1.樹的定...
    Jack921閱讀 4,762評論 1 31
  • 原鏈接:理解線索二叉樹|CloudWong 線索二叉樹原理 遍歷二叉樹的其實就是以一定規(guī)則將二叉樹中的結(jié)點排列成一...
    簡Cloud閱讀 8,548評論 1 16
  • 一、 概念 二叉樹按照先序、中序、后續(xù)遍歷的方法形成一個線性序列后,每個結(jié)點(除第一個和最后一個外),都有且僅有一...
    Qi0907閱讀 1,719評論 0 1

友情鏈接更多精彩內(nèi)容