乙個二叉樹的實現 C版

2021-08-29 22:16:17 字數 1385 閱讀 1789

二叉樹是一種很常見的資料結構,特別是二叉搜尋樹,如果在插入的時候組建二叉樹的話,在搜尋的時候可以達到很高的速度。下面我把自己實現的乙個二叉搜尋樹的原始碼貼出來,大家可以參考一下。

先看資料結構的定義:

bintree.h

#include struct	tnode;

struct tnode *addtree(struct tnode *,char *);

void treeprint(struct tnode *);

標頭檔案中定義了資料結構和兩個函式,相當於介面的定義,下面是具體的實現:

bintree.c

#include #include #include "bintree.h"

struct tnode *addtree(struct tnode *p,char *w)

else if((cond = strcmp(w,p->word)) == 0)

p->count++;

else if(cond < 0)

p->left = addtree(p->left,w);

else

p->right = addtree(p->right,w);

return p;

}//下面分別為三種遍歷樹的方式,中序,前序和後序遍歷

void treeprint(struct tnode *p)

}void treeprint2(struct tnode *p)

}void treeprint3(struct tnode *p)

}

好了,下邊是乙個測試函式:

main.c

#include #include #include #include "bintree.h"

static char *items = ;

int main(void)

測試結果如下:

結果:

hello : 2

monday : 2

mystery : 1

today : 1

tomorrow : 1

tuck : 2

today : 1

---------------------------

today : 1

hello : 2

monday : 2

mystery : 1

tomorrow : 1

tuck : 2

today : 1

---------------------------

hello : 2

monday : 2

mystery : 1

tomorrow : 1

tuck : 2

today : 1

二叉樹 二叉樹的下乙個結點

題目描述 給定一棵二叉樹和乙個結點,要求找到中序遍歷此樹時該結點的下乙個結點。分析 中序遍歷一棵二叉樹時,要根據乙個結點有無右子樹而分開討論。若當前結點有右子樹,則它的下乙個結點就是其右子樹的最左葉子結點 若當前結點沒有右子樹,那麼又分兩種情況 若當前結點是其父節點的左孩子結點,那麼其下乙個結點就是...

乙個二叉樹的映象

二叉樹的映象即每個結點的左右孩子互換。解決方法 先序遍歷樹的每個結點,若遍歷到的結點有子結點,則交換它的兩個子結點。具體 遞迴演算法 void binarymirror binarytreenode proot 迴圈演算法 void binarymirror nor binarytreenode p...

使用C 建立乙個二叉樹

由於在二叉樹的建立過程中,我們需要使用輸入 讀取的值來判定二叉樹是否有左節點或者右節點。因此我們在建立的時候就需要使用指標的引用或者二重指標。我們定義二叉樹的基本結點形式如下所示 typedef int elemtype struct node typedef node node 為了方便理解,我們...