西安交大朱站立《数据结构——使用C语言》各种头文件,顺序表、链表、堆栈、串、图等,有待更新,敬请期待!为了方便大家操作,此次存储为了word文档,更适合直接复制调用。
本文为二叉链存储结构的二叉树操作实现,实现了二叉树的定义、插入数据、删除数据、撤销以及二叉树的打印、前序遍历、中序遍历、后序遍历等。本项目工程包含2个头文件(BiTree.h、BiTreeTraverse.h)和一个源文件(BiTree.cpp)。
头文件1 BiTree.h
typedef struct Node
{
DataType data; //数据域
struct Node *leftChild; //左子树指针
struct Node *rightChild; //右子树指针
}BiTreeNode; //结点的结构体定义
/*初始化创建二叉树的头结点*/
void Initiate(BiTreeNode **root)
{
*root=(BiTreeNode *)malloc(sizeof(BiTreeNode));
(*root)->leftChild=NULL;
(*root)->rightChild=NULL;
}
/*若当前结点curr非空,在curr的左子树插入元素之为x的新结点*/
/*原curr所指结点的左子树成为新插入结点的左子树*/
/*插入成功则返回新插入结点的指针,否则返回空指针*/
BiTreeNode *InsertLeftNode(BiTreeNode *curr,DataType x)
{
BiTreeNode *s,*t;
if(curr==NULL) return NULL;
t=curr->leftChild; /*保留原curr所指结点的左子树指针*/
s=(BiTreeNode *)malloc(sizeof(BiTreeNode));
s->data=x;
s->leftChild=t; /*新插入结点的左子树为原curr的左子树*/
s->rightChild=NULL;
curr->leftChild=s; /*新结点成为curr的左子树*/
return curr->leftChild; /*返回新插入结点的指针*/
}
/*若当前结点curr非空,在curr的右子树插入元素之为x的新结点*/
/*原curr所指结点的右子树成为新插入结点的左子树*/
/*插入成功则返回新插入结点的指针,否则返回空指针*/
BiTreeNode *InsertRightNode(BiTreeNode *curr,DataType x)