1. 引言
本文主要二叉排序树和平衡二叉树。
2. 二叉排序树
#include "ds.h"
#define N 10 // 数据元素个数
typedef int KeyType; // 设关键字域为整型
struct ElemType // 数据元素类型
{
KeyType key;
int others;
};
typedef ElemType TElemType;
typedef struct BiTNode
{
TElemType data;
BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
#define EQ(a, b) ((a) == (b))
#define LT(a, b) ((a) < (b))
#define LQ(a, b) ((a) <= (b))
#define InitDSTable InitBiTree // 与初始化二叉树的操作同
#define DestroyDSTable DestroyBiTree // 与销毁二叉树的操作同
#define TraverseDSTable InOrderTraverse // 与中序遍历二叉树的操作同
/****************************************************************************************/
Status InitBiTree(BiTree &T)
{
T = NULL;
return OK;
}
void DestroyBiTree(BiTree &T)
{
if (T)
{
if (T->lchild)
DestroyBiTree(T->lchild);
if (T->rchild)
DestroyBiTree(T->rchild);
free(T);
T = NULL;
}
}
Status BiTreeEmpty(BiTree T)
{
if (T)
return FALSE;
else
return TRUE;
}
// 采用二叉链表存储结构,Visit是对数据元素操作的应用函数。算法6.3&