線索二叉樹它解決了無法直接找到該結點在某種遍歷序列中的前趨和後繼結點的問題,出現了二叉鍊錶找左、右孩子困難的問題,線索二叉樹又分為前序線索化,中序線索化和後序線索化,分別用不同的邏輯去實現。
線索二叉樹的實現思想:借用乙個列舉型別tag其中包含兩個狀態link(代表有資料),thread(代表下乙個節點為空)
在乙個節點的左節點或者右節點為空的情況下,將它的left或right設為thread,則它的左或右訪問的是改遍歷模式下訪問到的下乙個節點資料,這樣就完成了跳到另一顆子樹的過程,減少了遞迴的次數。
先序線索化
中序線索化
後序線索化
void _postorderthreading(binarytreexsh*root, binarytreexsh*&prev)
_postorderthreading(cur->_leftnode, prev);
_postorderthreading(cur->_rightnode, prev);
if (cur->_leftnode==null)
if (prev&&prev->_rightnode == null)
prev = cur;
}
本文出自 「痕跡」 部落格,請務必保留此出處 資料結構 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 ...
資料結構(線索二叉樹)
線索二叉樹的前序,中序,後序 typedef struct nodenode 前序線索二叉樹 參照中序即可 void prethread node p,node pre if pre null pre rchild null pre p if p ltag 0 prethread p lchild,...