二叉树二叉链表存储结构《头文件:#include "BiTreeHead.h"》
二叉树二叉链表存储结构 <函数实现:BiTreeFun.cpp>
//-------- 头文件BiTreeHead.h
//-------- 二叉树二叉链表存储结构
//-------- 头文件:#include "BiTreeHead.h"
//-------- 函数实现:BiTreeFun.cpp
//-------- 调用非系统头文件:
//--------------------------- #include "datatype.h" //定义数据类型
//--------------------------- #include "headfile.h" //各类头文件调用
#ifndef _BITREEHEAD_H_
#define _BITREEHEAD_H_
#include "headfile.h" //各类头文件调用
#include "datatype.h" //定义数据类型
typedef struct BiTNode
{
ElemType data; //结点数据
BiTNode * lchild; //左子树
BiTNode * rchild; //右子树
}BiTNode, *BiTree;
//*********************** 二叉树链表 4 个基本操作 *************************
//二叉树初始化
void InitBiTree(BiTree &T);
//销毁二叉树
void DestroyBiTree(BiTree & T);
//清空二叉树和销毁二叉树的操作一样
#define ClearBiTree DestroyBiTree
//先序遍历二叉树
void PreOrderTraverseBiTree(const BiTree & T);
//中序遍历二叉树
void InOrderTraverseBiTree(const BiTree & T);
//后序遍历二叉树
void AftOrderTraverseBiTree(const BiTree & T);
//*********************** 二叉树链表 18 个基本操作 *************************
//判断二叉链表是否为空
bool BiTreeEmpty(const BiTree & T);
//若二叉链表存在返回二叉树深度
size_t BiTreeDepth(const BiTree & T);
//返回T的根 BiTreeRoot() == Root()
ElemType BiTreeRoot(const BiTree & T);
//二叉树T存在,P指向T中某个结点,返回P所指向的结点值 BiTreeValue() == Value()
ElemType BiTreeValue(const BiTree & P);
//给P所指向的T中某结点赋值
void BiTreeAssign(BiTree & P, ElemType value);
//返回二叉树中与e元素相同结点的父结点值
ElemType Parent(const BiTree & T, const ElemType & e);
//返回二叉树中与e元素相同结点的指针
BiTree Point(const BiTree & T, ElemType e);
//返回二叉树中与e元素相同结点的左子结点值
ElemType LeftChild(const BiTree & T, ElemType e);
//返回二叉树中与e元素相同结点的右子结点值
ElemType RightChildChild(const BiTree & T, ElemType e);
//删除p 指向结点的左子树或右子树 LR==0删除左子树,否则删除右子树
void DeleteChild(BiTree & p, int LR);
//按先序次序输入二叉树中结点的值
void CreateBiTree(BiTree & T);
//LR==0,c成为p的左叉树,p原来的左叉树成为c右叉树(c右叉树为空);LR==1为右
void Insertchild(BiTree & p, int LR, BiTree & c);
#endif //_BITREEHEAD_H_