search

線索二叉樹的遍歷

線索二叉樹的遍歷

  n個結點的二叉連結串列中含有空指標域。利用二叉連結串列中的空指標域,存放指向結點在某種遍歷次序下的前驅和後繼結點的指標,這種附加的指標稱為"線索"。加上線索的二叉連結串列稱為線索連結串列,相應的二叉樹稱為線索二叉樹。根據線索性質的不同,線索二叉樹可分為前序線索二叉樹、中序線索二叉樹和後序線索二叉樹三種。

  二叉樹的遍歷本質上是將一個複雜的非線性結構轉換為線性結構,使每個結點都有了唯一前驅和後繼,第一個結點無前驅,最後一個結點無後繼。對於二叉樹的一個結點,其前驅後繼只有在遍歷中得到。為了容易找到前驅和後繼,

實現二叉樹的各種遍歷方法

  遍歷是對樹的一種最基本的運算,所謂遍歷二叉樹,就是按一定的規則和順序走遍二叉樹的所有結點,使每一個結點都被訪問一次,而且只被訪問一次。由於二叉樹是非線性結構,因此,樹的遍歷實質上是將二叉樹的各個結點轉換成為一個線性序列來表示。

  二叉樹有三種遍歷方法,先序遍歷,首先訪問根,再先序遍歷左子樹,最後先序遍歷右子樹。中序遍歷,首先中序遍歷左子樹,再訪問根,最後遍歷右子樹。後序遍歷,首先後序遍歷左子樹,再後序遍歷右子樹,最後訪問根。

後序遍歷二叉樹

  後序遍歷是二叉樹遍歷的一種,也叫做後根遍歷、後序周遊,可記做左右根。後序遍歷有遞迴演算法和非遞迴演算法兩種。在二叉樹中,先左後右再根。巧記:左右根。序遍歷的非遞迴演算法是三種順序中最複雜的,原因在於,後序遍歷是先訪問左、右子樹,再訪問根節點,而在非遞迴演算法中,利用棧回退到時,並不知道是從左子樹回退到根節點,還是從右子樹回退到根節點,如果從左子樹回退到根節點,此時就應該去訪問右子樹,而如果從右子樹回退到根節點,此時就應該訪問根節點。所以相比前序和後序,必須得在壓棧時新增資訊,以便在退棧時可以知道是從左子樹返


順序

  二叉樹遍歷是指沿著某條搜尋路線,依次對樹中每個結點均做一次且僅做一次訪問。訪問結點所做的操作依賴於具體的應用問 題。 遍歷是二叉樹上最重要的運算之一,是二叉樹上進行其它運算之基礎。   除了先序遍歷、中序遍歷、後序遍歷外,還可以對二叉樹進行層序遍歷。設二叉樹的根節點所在層數為:層序遍歷就是從所在二叉樹的根 ...

C語言資料結構

  層次遍歷應該沒有遞迴演算法遞迴實際就是一種深度優先的演算法而層次遍歷實際是廣度優先的遍歷演算法,所以遞迴不適用比如假設有遞迴演算法,現遍歷i層的開始,對i層第一個元素遍歷後需呼叫遞迴函式遍歷其孩子,遞迴呼叫完成後才繼續遍歷i層第二個元素,這樣就不是層次遍歷了。 ...

如何實現線索

  建立線索二叉樹,或者說對二叉樹線索化,實質上就是遍歷一棵二叉樹。在遍歷過程中,訪問結點的操作是檢查當前的左,右指標域是否為空,將它們改為指向前驅結點或後續結點的線索。為實現這一過程,設指標始終指向剛剛訪問的結點,即若指標指向當前結點,則指標指向它的前驅,以便設線索。   另外,在對一顆二叉樹加線索時,必須 ...

什麼場景下會使用

  樹是一種重要的非線性資料結構,直觀地看,它是資料元素(在樹中稱為結點)按分支關係組織起來的結構,很像自然界中的樹那樣。樹結構在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構都可用樹形象表示。樹在計算機領域中也得到廣泛應用,如在編譯源程式如下時,可用樹表示源源程式如下的語法結構。又如在資料庫系統中, ...

由哪3個基本元素組成

  構成二叉樹的3個基本元素是左子樹,右子樹,和根。   二叉樹有五種基本形態:   1、空二叉樹;   2、僅有根節點的二叉樹;   3、左子樹為空的二叉樹 ;   4、右子樹為空的二叉樹;   5、左右子樹均為非空的二叉樹 。 ...

查詢問題

  查詢二叉樹用折半查詢法,該方法優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中 ...

完全的順序儲存的方法步驟

  完全二叉樹的順序儲存,僅需從根節點開始,按照層次依次將樹中節點儲存到陣列即可,在計算機科學中,二叉樹是每個結點最多有兩個子樹的樹結構。通常子樹被稱作“左子樹”(leftsubtree)和“右子樹”(rightsubtree)。二叉樹常被用於實現二叉查詢樹和二叉堆。   一棵深度為k,且有2^k-1個結點的 ...