#include<stdio.h>
typedef struct ThreadNode{
int data;
struct ThreadNode *lchild,*rchild;
int ltag,rtag;
}ThreadNode,*ThreadTree;
//用二叉树中序遍历对二叉树线索化
void InThread(ThreadTree &p,ThreadTree &pre)
{
if(p!=NULL)
{
InThread(p->lchild,pre); //类似于中序遍历,先递归到最左下的结点
if(p->lchild == NULL) //判断结点的左儿子是否为空
{
p->lchild = pre;
p->ltag=1;
}
if(pre!=NULL&&pre->rchild==NULL) //判断该结点的前驱结点的右儿子是否为空(此时该结点为其前驱结点的左儿子)
{
pre->rchild = p;
pre->rtag=1;
}
pre = p; //将此结点置为其左儿子的前驱结点
InThread(p->rchild,pre); //左结点判定结束后向右转移,将此结点视为根结点
}
}
二叉树中序遍历线索化
最新推荐文章于 2024-04-29 19:53:30 发布