标题:关于实现二叉树中序线索化的问题
取消只看楼主
Cocoo_g
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-5-15
 问题点数:0 回复次数:0 
关于实现二叉树中序线索化的问题
这是我写的程序,可以运行但是结果不对,请大神指教
#include"stdio.h"
#include"malloc.h"
typedef char DataType;
typedef struct Threadnode{
    int ltag,rtag;
    DataType data;
    struct Threadnode *lchild,*rchild;
}Threadnode,*ThreadTree;
Threadnode *creat_Btree()
{
    ThreadTree p;
    char ch;
    ch=getchar();
    if(ch=='#')   
        p=NULL;
    else{
    p=(Threadnode *)malloc(sizeof(Threadnode));//生成新结点
    p->data=ch;
    p->ltag=0;
    p->rtag=0;
    p->lchild=creat_Btree();//创建新结点的左子树
    p->rchild=creat_Btree();//创建新结点的右子树
    }

    return p;
}

ThreadTree InThread(ThreadTree t,ThreadTree pre){
    if(t){
        InThread(t->lchild,pre);
        if(t->lchild==NULL){
            t->ltag=1;
            t->lchild=pre;
        }
        if(t->rchild==NULL)
            t->rtag=1;
        if((pre)&&(pre->rtag==1))
            pre->rchild=t;
            pre=t;
        InThread(t->rchild,pre);
    }
    return t;
}
ThreadTree InPostNode(ThreadTree p){
    ThreadTree post;
    post=p->rchild;
    if(p->rtag==1)
        return post;
    else
        while(post->ltag==0)
            post=post->lchild;
    return post;
}
void InOrderTh(ThreadTree t){
    ThreadTree p;
    if(t){
        p=t;
        while(p->ltag==0)
            p=p->lchild;
        while(p){
            printf("%c->",p->data);
            p=InPostNode(p);
        }
    }
}

main(){
    printf("输入先序线索二叉树:\n");
    ThreadTree t=creat_Btree(),pre;
    pre=NULL;
    t=InThread(t,pre);
    printf("中序线索化遍历:\n");
    InOrderTh(t);
}
搜索更多相关主题的帖子: 二叉树 include 
2016-05-15 20:21



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-464850-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.186268 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved