一、線索化二叉樹基本介紹
n個結點的二叉鍊錶中含有2n-(n-1)=(n+1)個空指標域。利用二叉鍊錶中的空指標域,存放指向結點在某種遍歷次序下的前驅和後繼結點的指標(這種附加的指標稱為線索)
這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹(threaded binarytree)。根據線索性質的不同,線索二叉樹可以分為前序線索二叉樹、中序線索二叉樹和後續線索二叉樹
。乙個結點的前乙個節點,稱為前驅結點
乙個結點的後乙個節點,稱為後繼結點
這裡對2n-(n-1)=(n+1)公式
做乙個說明,我一開始沒懂:乙個有n個結點的二叉樹,每個節點有左右兩個指標域,共有2n個指標域。除了根結點,每個結點有1個分支(這裡可以理解成除了根結點每個結點有乙個父結點伸出來的連線的線,就是父結點已經被用掉的指標域),也就是n-1個指標域被用掉了,那剩下的就是2n-(n-1)個,就是空指標域。
二、中序線索二叉樹**實現
案例說明:將下面的二叉樹,進行中序線索二叉樹。並遍歷中序線索二叉樹。
線索化二叉樹說明:當線索化二叉樹後,node節點的屬性left和right,有如下情況:
1)left指向的是左子樹,也可能是指向前驅結點。
2)right指向的是右字數,也可能是後繼結點。
遍歷說明:線索化後,各個結點指向有變化,因此原來的遍歷方式不能使用,這時需要使用新的方式遍歷線索化二叉樹,各個結點可以通過線型方式遍歷,因此無需使用遞迴,這樣提高了遍歷效率,遍歷的次序和中序遍歷保持一致。
**實現:
資料結構 二叉樹的線索化
線索二叉樹它解決了無法直接找到該結點在某種遍歷序列中的前趨和後繼結點的問題,出現了二叉鍊錶找左 右孩子困難的問題,線索二叉樹又分為前序線索化,中序線索化和後序線索化,分別用不同的邏輯去實現。線索二叉樹的實現思想 借用乙個列舉型別tag其中包含兩個狀態link 代表有資料 thread 代表下乙個節點...
資料結構 14 線索化二叉樹
建立 binarytree 二叉樹 class threadedbinarytree public void threadernodes 編寫對二叉樹 中序線索化方法 public void threadernodes heronode node 向左 threadernodes node.getl...
線索二叉樹 資料結構
按照教材進行中序二叉樹線索化 線索化就是就將二叉樹的多出來的n 1個鏈域用做指向前驅和後繼用,前驅後繼指的是按中序遍歷二叉樹產生的前驅和後繼 ltag 0 有左孩子 ltag 1 無左孩子,指向前驅 rtag 0 有右孩子 rtag 1 無右孩子,指向後繼 例子 構造二叉樹 形如abc de fg ...