大家好,又见面了,我是你们的朋友全栈君。
代码语言:javascript复制#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); //左结点判定结束后向右转移,将此结点视为根结点
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。