//线索二叉树
#include<stdio.h>
#include<malloc.h>
#include<process.h>
#define OVERFLOW -2
//二叉树的二叉线索存储结构
enum PointerTag{Link,Thread}; //枚举类型,Link(0):指针,Thread(1):线索
struct BiThrNode
{
char data;
BiThrNode *lchild,*rchild;//左右孩子指针
PointerTag LTag,RTag;//左右标志
};
typedef BiThrNode *BiThrTree;
//按照先序的次序输入二叉树中节点的值,构造线索二叉树T,char,空格表示空节点
void CreateBiThrTree( BiThrTree &T)
{
char ch;
scanf("%c",&ch);
if(ch == ' ')
T=NULL;
else
{
T=(BiThrTree)malloc(sizeof(BiThrNode));//生成根节点,先序
if(!T)
exit(OVERFLOW);
T->data=ch;//给根节点赋值
CreateBiThrTree(T->lchild);//递归构造左子树
if(T->lchild)//如果有左孩子
T->LTag=Link;//给坐标值赋值为0
CreateBiThrTree(T->rchild);//递归
线索二叉树和中序非递归遍历线索化后的二叉树
最新推荐文章于 2022-11-09 23:41:53 发布