| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1317 人关注过本帖
标题:关于实现二叉树中序线索化的问题
取消只看楼主 加入收藏
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
快速回复:关于实现二叉树中序线索化的问题
数据加载中...
 
   



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

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