線索二叉樹的一些思考

2022-06-07 18:18:06 字數 733 閱讀 5625

將一棵二叉樹線索化,能加快找前驅和後繼的速度,這就是線索二叉樹和普通二叉樹相比,它最大的優勢。

下面將主要講述如何找前驅和後繼、如何將二叉樹線索化。

1)對於中序線索二叉樹,它的前驅為:左子樹按照中序遍歷最後乙個節點

2)他的後繼為:右子樹按照中序遍歷第乙個節點

1)第乙個節點

一直往左走,最左邊的即為第乙個節點

2)最後乙個節點

一直往右走,最右邊的即為最後節點

1)前序的後繼節點

若有左孩子,則為左孩子;若只有右孩子,則為右孩子。若為葉結點,則右鏈域直接指示了節點的後繼。

2)後序的前驅節點

若有右孩子則為右孩子,沒有有孩子只有左孩子則為左孩子。若該節點為葉結點,那它的左鏈域直接指示了節點的前驅。

設立指標pre指向剛剛訪問過的節點,指標p指向正在訪問的節點。pre即為p的前驅。在中序遍歷中,檢查p的做指標是否為空,若為空:p->left = pre;檢查pre的右指標是否為空,若為空:pre->right = p;這是乙個遞迴的過程。

(C )二叉樹的線索化 線索二叉樹

線索化標誌tag enum pointertag 結點結構 template struct binarytreenodethd 基類迭代器 template struct binarytreeiterator t operator t operator bool operator const sel...

線索二叉樹

當用二叉鍊錶作為二叉樹的儲存結構時,因為每個結點中只有指向其左 右兒子結點的指標,所以從任一結點出發只能直接找到該結點的左 右兒子。在一般情況下靠它無法直接找到該結點在某種遍歷序下的前驅和後繼結點。如果在每個結點中增加指向其前驅和後繼結點的指標,將降低儲存空間的效率。我們可以證明 在n個結點的二叉鍊...

線索二叉樹

1.線索二叉樹結構和操作定義 threadbintree.h 功能 線索標誌域所有值 typedef enumnodeflag 功能 線索二叉樹結構體 typedef struct threadtreethreadbintree 前驅節點指標 threadbintree previous null ...