用C语言实现二叉树基本功能
接口部分 “binaryTree.h”
#ifndef _BINARY_TREE_H_
#define _BINARY_TREE_H_
#include <stdbool.h>
#define NAME_LENGTH 20
#define MAX_TRNODES 15
typedef struct _item
{
char name[NAME_LENGTH];
int value;
} Item;
typedef struct _trnode
{
struct _trnode *left;
struct _item item;
struct _trnode *right;
} Trnode;
typedef struct _tree
{
struct _trnode *root;
int total;
} Tree;
void InitializeTree(Tree *tree);
bool TreeIsEmpty(const Tree *tree);
bool TreeHasEmpty(const Tree *tree);
bool TreeIsFull(const Tree *tree);
bool TreeHasFull(const Tree *tree);
int TrnodesCount(const Tree *tree);
bool AddTrnode(Tree *tree, Item item);
bool SearchTrnode(const Tree *tree, Item item, Trnode **pnode, Trnode **plast);
bool DeleteTrnode(Tree *tree, Item item);
void printTrnode(const Tree *tree);
void DeleteAllTrnode(Tree *tree);
#endif
实现部分 “binaryTree.c”
初始化
void InitializeTree(Tree *tree)
{
tree->root = NULL;
tree->total = 0;
}
获得树的状态
bool TreeIsEmpty(const Tree *tree)
{
if (NULL == tree->root) {
return true;
} else {
return false;
}
}