線索化的實質是將二叉鍊錶中的空指標改為指向前驅或後繼的線索,前驅和後繼的資訊是在遍歷過程中才能得到,故線索化的過程即為在遍歷過程中修改空指標的過程。
/**************************====*/
/*線索二叉樹 */
/**************************====*/
#include #include typedef struct tree
treenode;
treenode *record; //記錄前驅和後繼節點
/***************************/
/*遞迴建立二叉樹 */
/***************************/
treenode *preorder_create(treenode *ptr)
return ptr;
}/*******************************=*/
/*中序遞迴二叉樹----線索化 */
/*******************************=*/
treenode *in_threading(treenode *ptr)
if(record->right == null ) //前驅節點沒有右子樹
record = ptr; //保持record指向ptr的前驅
in_threading(ptr->right); //遞迴右子樹線索化 }}
/*******************************=*/
/*二叉樹線索化 */
/*******************************=*/
treenode *in_tread(treenode *root) //root是樹根節點
return head;
}/*******************************=*/
/*中序二叉線索樹的中序遍歷 */
/*******************************=*/
void tree_each(treenode *head)
ptr = ptr->right; }}
/*******************************=*/
/*主函式 */
/*******************************=*/
int main()
(C )二叉樹的線索化 線索二叉樹
線索化標誌tag enum pointertag 結點結構 template struct binarytreenodethd 基類迭代器 template struct binarytreeiterator t operator t operator bool operator const sel...
線索化二叉樹以及遍歷線索化二叉樹
1.線索二叉樹基本介紹 n個結點的二叉鍊錶中含有n 1 公式 2n n 1 n 1 個空指標域。利用二叉鍊錶中的空指標域,存放指向該結點在某種遍歷次序下的前驅和後繼結點的指標 這種附加的指標稱為 線索 這種加上了線索的二叉鍊錶稱為線索鍊錶,相應的二叉樹稱為線索二叉樹 threaded binaryt...
線索化二叉樹
define crt secure no warnings 1 includeusing namespace std enum pointertag 列舉 其結構如下 void prevorderthreading 前序 void postorderthreading 後序 void inorder...