数据结构-线索二叉树基本操作源代码(C/C++实现)
关键点理解
中序遍历有隔一个结点为一个叶子结点的特点–>叶子结点孩子指针为NULL—>利用起来,叶子结点左边域空间方指向前驱结点,前驱结点若无右孩子结点,则前驱结点的右孩子指针域指向当前结点
当真不知道是哪个个鬼才发明的结构…光理解就要好半天
源代码
#include "string.h"
#include "stdio.h"
#include "stdlib.h"
#include "io.h"
#include "math.h"
#include "time.h"
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
#define MAXSIZE 100 /* 存储空间初始分配量 */
typedef int Status; /* Status是函数的类型,其值是函数结果状态代码,如OK等 */
typedef char TElemType;
/* Link==0,表示指向左右孩子指针, */
/* Thread==1,表示指向前驱或后继的线索 */
typedef enum {
Link, Thread } PointerTag;
typedef struct BiThrNode /* 二叉线索存储结点结构 */
{
TElemType data; /* 结点数据 */
struct BiThrNode *lchild, *rchild; /* 左右孩子指针 */
PointerTag LTag;
PointerTag RTag; /* 左右标志 */
} BiThrNode, *BiThrTree;
TElemType Nil = '#'; /* 字符型以空格符为空 */
Status visit(TElemType e)
{
printf("%c ", e);