C語言實現線索二叉樹的定義與遍歷示例

2022-10-04 01:06:09 字數 1002 閱讀 4577

#include

#include

typedef char telemtype;

// 二叉樹的二叉線索儲存表示

typedef enumpointertag; // link(0):指標,thread(1):線索

typedef struct bithrnode

bithrnode,*bithrtree;

telemtype nil = ' '; // 字元型以空格符為空

bithrtree pre; // 全域性變數,始終指向剛剛訪問過的結點

// 按先序輸入二叉線索樹中結點的值,構造二叉線索樹t

// 空格(字元型)表示空結點

int createbithrtree(bithrtree *t)

return 1;

}// 演算法6.7 p135

// 中序遍歷進行中序線索化。

void inthreading(bithrtree p)

if(!pre->rchild) // 前驅沒有右孩子

pre=p; // 保持pre指向p的前驅

inthreading(p->rchild); // 遞迴右子樹線索化 }}

// 演算法6.6 p134

// 中序遍歷二叉樹t,並將其中序線索化,thrt指向頭結程式設計客棧點。

int inorderthreading(bithrtree *thrt,bithrtree t)

return 1;

}// 演算法6.5 p134

// 中序遍歷二叉線索樹t(頭結點)的非遞迴演算法。

int inordertr**erse_thr(bithrtree t,int(*visit)(telemtype))

p=p->rchild;

} return 1;

}int vi(telemtype c)

int main()

執行結果:

本文標題: c語言實現線索二叉樹的定義與遍歷示例

本文位址:

用C語言實現線索二叉樹

為什麼會有線索二叉樹?當以二叉鍊錶形式來儲存二叉樹時,只能找到節點的左右子樹資訊,而不能直接得到節點的前驅和後繼資訊 只有通過遍歷,在動態過程中才能查到前驅和後繼的資訊 因此就有了線索二叉樹,由二叉樹的性質可知,一棵具有 n 個節點的二叉樹,對應的二叉鍊錶中共有 2n 個指標域,其中 n 1 個用於...

c語言實現線索二叉樹的建立,線索化以及遍歷

結構與函式 typedef struct threadnodethreadnode,threadtree threadtree initthreadtree void inthread threadtree p,threadtree pre 通過中序遍歷對二叉樹線索化 void createinth...

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

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