⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitree.h

📁 数据结构课程设计,表达式求值.大家看看,如果功能不好再找我修改
💻 H
字号:
#ifndef BITREE_H
#define BITREE_H
  
#define TRUE	1
#define FALSE	0
#define OK		1
#define ERROR	0
#define IBFEASIBLE  -1
#define OVERFLOW    -2 

#define MAXLEN  20
#define MAXSIZE 20

typedef	int	Status;
typedef char TElemType; 
  
typedef struct BiTNode 
{
	TElemType data;
	struct BiTNode *lchild, *rchild; /* 左右孩子指针 */
} BiTNode, *BiTree; /* 二叉树的二叉链表存储表示 */

Status CreateBiTree( BiTree & T);	
//操作结果:构造二叉树T。
//先序输入二叉树
Status Create( BiTree &T );
//初始条件:二叉树T存在,e是T中某个结点。
//操作结果:有提醒文字的创建树
void PrintBiTree( BiTree T );
//初始条件:二叉树T存在,e是T中某个结点。
//操作结果:有文字说明的,前序输出
Status InitBiTree(BiTree & T);
//操作结果:构造空二叉树。
Status BiTreeEmpty(BiTree & T );
//初始条件:二叉树T存在。
//操作结果:若T为空二叉树,则返回TRUE,否则FALSE。
Status ClearBiTree(BiTree &T);
//初始条件:二叉树T存在。
//操作结果:将T清为空二叉树,成功则返回TRUE,否则FALSE
Status DestroyBiTree(BiTree &T);
//初始条件:二叉树T存在。
//操作结果:销毁二叉树T。
Status BTValue( BiTree T, BiTNode E, TElemType &e );
//初始条件:二叉树T存在,e是T中某个结点。
//操作结果:返回e的值。
Status BTAssign( BiTree &T, TElemType &e, TElemType value );
//初始条件:二叉树T存在,e是T中某个结点。
//操作结果:结点e赋值为value。
BiTree Root( BiTree T);
//初始条件:二叉树T存在。
//操作结果:返回T的根。
int BiTreeDepth( BiTree T );
//初始条件:二叉树T存在。
//操作结果:返回T的深度。
int Counter( BiTree T );
//初始条件:二叉树T存在。
//操作结果:返回T的结点的个数
int NumLeaf( BiTree T );
//初始条件:二叉树T存在。
//操作结果:返回T的叶子个数
int BiTreeWidth( BiTree T );
//初始条件:二叉树T存在。
//操作结果:返回T的的宽度
int CountDegree2( BiTree T );
//初始条件:二叉树T存在。
//操作结果:返回T中度为2的结点数
//递归算法实现
BiTree Parent( BiTree T, TElemType e );
//初始条件:二叉树T存在,e是T中某个结点。
//操作结果:若e是T的非根结点,则返回它的双亲,否则返回“空”。
BiTree LeftChild( BiTree T, TElemType e );
//初始条件:二叉树T存在,e是T中某个结点。
//操作结果:返回e的左孩子。若e无左孩子,则返回“空”
BiTree RightChild( BiTree T, TElemType e );
//初始条件:二叉树T存在,e是T中某个结点。
//操作结果:返回e的右孩子。若e无左孩子,则返回“空”。
BiTree LeftSibling( BiTree T, TElemType e );
//初始条件:二叉树T存在,e是T中某个结点。
//操作结果:返回e的左兄弟。若e 是T的左孩子或无左兄弟,则返回“空”。
BiTree RightSibling( BiTree T, TElemType e );
//初始条件:二叉树T存在,e是T中某个结点。
//操作结果:返回e的右兄弟。若e是T的右孩子或无右兄弟,则返回“空”。


//Status ( * Visit )( TElemType e );
//用于下面Print函数的指针函数
//Status Print( TElemType e );
//输出e
Status Visit( TElemType e );
//输出e

BiTree FindNode(BiTree T, TElemType x);    
//返回data域为x结点的指针 
//Status Exchange( BiTree T );????????????????????????????????????????????????????
//交换左右孩子
Status PreOrderTraverse( BiTree T, Status ( * Visit )( TElemType e ) );
//前序遍历的递归算法  
Status InOrderTraverse( BiTree T, Status ( * Visit )( TElemType e ) );
//中序遍历的递归算法
Status PostOrderTraverse( BiTree T, Status ( * Visit )( TElemType e ) );
//后序遍历的递归算法 
Status LevelOrdeTraverse( BiTree T, Status ( * Visit )( TElemType e ) );
//层序遍历的非递归算法
Status PreOrder( BiTree T, Status( * Visit )( TElemType e ) );
//前序遍历的非递归算法
Status InOrder( BiTree T, Status( * Visit )( TElemType e ) );
//中序遍历的非递归算法
Status PostOrder( BiTree T, Status ( * Visit )( TElemType e ) );
//后序遍历的非递归算法 
void WriteExpr( BiTree T );
//用带括号的中序表示式输出
Status IsLikeBit( BiTree S,BiTree T );
//判断S和T是否相似
Status IsCompleteBit( BiTree T );
//判定T是不是完全二叉树,是,返回TRUE,否则,返回FALSE
//要用到队列
Status InserChild( BiTree T, BiTree p, int LR, BiTree c);
//初始条件:二叉树T存在,p指向T中某个结点,LR为0或1,非空二叉树c与T不相交且右子树为空。
//操作结果:根据LR为0或1,插入c为T中p所指结点的左或右子树。p所指结点的原有左或右子树则成为c的右子树。
Status DeleteChild( BiTree T, BiTree p, int LR );
//初始条件:二叉树T存在,p指向T中某个结点,LR为0或1。
//操作结果:根据LR为0或1,删除T中p所指结点的左或右子树。
Status ArrayCreate( BiTree &T, char *ch, int &i );
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -