一、sysutil.h//系統標頭檔案
#ifndef _sysutil_h_
#define _sysutil_h_
#include
#include
#include
#include
#include
#pragma warning (disable:4996)
#include
//記憶體洩漏工具的標頭檔案
#include
#endif
二、tree.h//二叉樹實現函式的檔案
#include
"sysutil.h"
typedef
char btdatatype;
typedef
struct binarytreenode
btnode;
// 通過前序遍歷的陣列"abd##e#h##cf##g##"構建二叉樹
btnode*
binarytreecreate
(btdatatype* a,
int n,
int* pi)
;// 二叉樹銷毀
void
binarytreedestory
(btnode*
* root)
;// 二叉樹節點個數
intbinarytreesize
(btnode* root)
;// 二叉樹葉子節點個數
intbinarytreeleafsize
(btnode* root)
;// 二叉樹第k層節點個數
intbinarytreelevelksize
(btnode* root,
int k)
;// 二叉樹查詢值為x的節點
btnode*
binarytreefind
(btnode* root, btdatatype x)
;// 二叉樹前序遍歷
void
binarytreeprevorder
(btnode* root)
;// 二叉樹中序遍歷
void
binarytreeinorder
(btnode* root)
;// 二叉樹後序遍歷
void
binarytreepostorder
(btnode* root)
;// 層序遍歷
void
binarytreelevelorder
(btnode* root)
;// 判斷二叉樹是否是完全二叉樹
intbinarytreecomplete
(btnode* root)
;btnode*
binarytreecreate
(btdatatype* a,
int n,
int* pi)
else}}
void
binarytreedestory
(btnode*
* root)
}binarytreesize
(btnode* root)
intbinarytreeleafsize
(btnode* root)
}int
binarytreelevelksize
(btnode* root,
int k)
btnode*
binarytreefind
(btnode* root, btdatatype x)
void
binarytreeprevorder
(btnode* root)
}void
binarytreeinorder
(btnode* root)
}void
binarytreepostorder
(btnode* root)
}#include
"queue.h"
void
binarytreelevelorder
(btnode* root)}}
#include
"queue.h"
intbinarytreecomplete
(btnode* root)
if(cur->_left)
if(tag &&
(cur->_left || cur->_right))if
(cur->_right)
else
linkqueuede
(&q);}
}
三、queue.h//佇列實現函式,這裡是為了在層次訪問的時候使用。
#ifndef _queue_h_
#define _queue_h_
#include
"sysutil.h"
struct btnode;
#define queueelemtype struct btnode*
//鏈佇列
typedef
struct linkqueuenode
linkqueuenode;
typedef
struct linkqueue
linkqueue;
void
linkqueueinit
(linkqueue *pq)
;void
linkqueuedestroy
(linkqueue *pq)
;void
linkqueueen
(linkqueue *pq, queueelemtype x)
;void
linkqueuede
(linkqueue *pq)
;void
linkqueueshow
(linkqueue *pq)
;queueelemtype linkqueueback
(linkqueue *pq)
;queueelemtype linkqueuefront
(linkqueue *pq)
;bool linkqueueempty
(linkqueue *pq)
void
linkqueueinit
(linkqueue *pq)
void
linkqueueen
(linkqueue *pq, queueelemtype x)
}void
linkqueuede
(linkqueue *pq)
}void
linkqueueshow
(linkqueue *pq)
printf
("nil.\n");
}queueelemtype linkqueueback
(linkqueue *pq)
queueelemtype linkqueuefront
(linkqueue *pq)
void
linkqueuedestroy
(linkqueue *pq)
pq->head = pq->tail =
null;}
#endif
四、testmain.c//主函式
#include
"tree.h"
intmain()
二叉樹 排序二叉樹的簡單實現
二叉樹 排序二叉樹 include using namespace std 二叉樹的節點 date 資料 left 指向二叉樹的左子樹 right 指向二叉樹的右子樹 template struct node template class btree public btree root null c...
二叉樹實現
include include include include define maxsize 100 define ok 1 define error 0 define true 1 define false 0 typedef int status typedef int telemtype ty...
二叉樹實現
課內最近學了二叉樹,參考書上的 做了二叉樹的實現,尚不完善,還有很多地方不明白。二叉樹實現。define maxsize 100 include using namespace std 定義二叉樹節點 class btnode void createbt btnode bt,char str voi...