二叉樹是一種很常見的資料結構,特別是二叉搜尋樹,如果在插入的時候組建二叉樹的話,在搜尋的時候可以達到很高的速度。下面我把自己實現的乙個二叉搜尋樹的原始碼貼出來,大家可以參考一下。
先看資料結構的定義:
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 為了方便理解,我們...