前提:为什么要有线索二叉树这个东西呢??????
答:利用原来二叉树的n+1个空位建立线索机制,方便查找前驱和后继。
问:可以不学吗?
答:达美哟~,不学是不行的,因为考试要考啊。。。。
接下来让我们看看代码吧。。。
结构体:
//线索二叉树
typedef struct BiTNode{
int data;
//判断左右指向是前驱还是节点的孩子
int ltag,rtag;
//左孩子,右孩子,父节点
struct BiTNode *lchild,*rchild,*parent;
}BiTNode,*BiTree;
有了结构体干什么呢,当然先建个树玩玩呗。
创建线索二叉树:
//创建二叉树
BiTree createTree(){
int data;
scanf("%d",&data);
BiTree t = NULL;
if(data!=-1){
t = (BiTree)malloc(sizeof(BiTNode));
t->data = data;
t->ltag = 0;
t->rtag = 0;
t->lchild = createTree();
//祖先节点绑定
if(t->lchild!=NULL)t->lchild->parent=t;
t->rchild = createT