數(shù)據(jù)結構_樹_線索二叉樹

github地址:
https://github.com/arkulo56/thought/blob/master/software/dataStruct/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84_%E6%A0%91_%E7%BA%BF%E7%B4%A2%E4%BA%8C%E5%8F%89%E6%A0%91.md

線索二叉樹

產(chǎn)品分類是樹型結構,如果要頻繁的按照一定的次序訪問產(chǎn)品分類(遍歷)

  1. 有效的利用了二叉鏈表中的空指針
  2. 對二叉樹以某種次序遍歷使其變?yōu)榫€索二叉樹的過程稱為線索化
  3. 一棵有n個節(jié)點的二叉樹,左右孩子用到的指針是n-1,留給線索的空指針是n+1

<img src="https://raw.githubusercontent.com/arkulo56/thought/master/images/datastruct/xiansuo_binaryTree.png" width="600" />

創(chuàng)建

按照中序遍歷訪問每一個節(jié)點,訪問的過程中,用線索取代空指針。

  1. 若上次訪問的節(jié)點的右指針為空,則將當前訪問的節(jié)點地址填入,并置右標識位為1(后序)
  2. 若當前訪問的節(jié)點的左指針為空,則將上次訪問的節(jié)點地址填入,并置做標識位為1(前序)

注:從圖2的H節(jié)點開始中序遍歷,按照上述兩條規(guī)則就可建立線索二叉樹了

查詢

訪問前驅(qū)后繼的方法是相同的,下面介紹后繼,前驅(qū)反過來就行了

  1. 如果當前節(jié)點P的右標識位為0,則P->rchild為線索,指向P的后繼
  2. 如果節(jié)點P的右標識位為1,則P的后繼節(jié)點是右子樹中序遍歷的第一個節(jié)點。也就是沿著P的右孩子開始,按照左鏈(左孩子)往下查,直至找到一個沒有左孩子的節(jié)點為止。

注:圖3中A節(jié)點就是比較特殊的節(jié)點,他的前驅(qū)后繼就得通過左右子樹確定

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

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

  • 樹的概述 樹是一種非常常用的數(shù)據(jù)結構,樹與前面介紹的線性表,棧,隊列等線性結構不同,樹是一種非線性結構 1.樹的定...
    Jack921閱讀 4,762評論 1 31
  • 基于樹實現(xiàn)的數(shù)據(jù)結構,具有兩個核心特征: 邏輯結構:數(shù)據(jù)元素之間具有層次關系; 數(shù)據(jù)運算:操作方法具有Log級的平...
    yhthu閱讀 4,471評論 1 5
  • 1 序 2016年6月25日夜,帝都,天下著大雨,拖著行李箱和同學在校門口照了最后一張合照,搬離寢室打車去了提前租...
    RichardJieChen閱讀 5,377評論 0 12
  • 四、樹與二叉樹 1. 二叉樹的順序存儲結構 二叉樹的順序存儲就是用數(shù)組存儲二叉樹。二叉樹的每個結點在順序存儲中都有...
    MinoyJet閱讀 1,735評論 0 7
  • 首先是電影情節(jié)方面,講的是男女主角互換身體(也有人說是夢中相遇,但我是這樣理解的),一方救贖了另一方,并最終相愛。...
    Mr小唐閱讀 368評論 0 0

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