C语言数据结构代码练习day19
中序线索二叉树中序遍历
#include <stdio.h>
#include <stdlib.h>
typedef struct BiNode{
int data; //二叉树存储数据
int ltag,rtag; //定义左右线索
struct BiNode *lchild, *rchild; //左孩子指针和右孩子指针
}BiNode,*BiTree; //二叉树结点、二叉树指针
/*找到以p为根的树第一个中序遍历的结点*/
BiNode *Firstnode(BiNode *p){
while (p->ltag==0)p=p->lchild;
return p;
}
/*中序线索二叉树寻找中序后继*/
BiNode *NextNode(BiNode *p){
if(p->rtag==0) return Firstnode(p->rchild);
else return p->rchild;
}
/*中序线索二叉树进行中序遍历*/
void Inorder(BiNode *T){
for(BiNode *p=Firstnode(T);p!=NULL;p=NextNode(p))
printf("%d",p->data); //访问结点
}