| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1813 人关注过本帖
标题:已知二叉树的中序遍历序列和后序遍历序列,还原二叉树,我的程序总是不对, ...
取消只看楼主 加入收藏
ksws0191053
Rank: 2
等 级:论坛游民
帖 子:30
专家分:32
注 册:2010-12-3
结帖率:42.86%
收藏
已结贴  问题点数:20 回复次数:0 
已知二叉树的中序遍历序列和后序遍历序列,还原二叉树,我的程序总是不对,求修改
上网找了很多资料,自认为理解了算法,可是总是输出一堆乱码,求修改啊,感激不尽,我快想疯了
程序代码:
#include "stdio.h"
#include "malloc.h"
#include "string.h"
#define TRUE 1
#define FALSE 0
#define OK  1
#define ERROR  0
#define INFEASIBLE -1
#define OVERFLOW -2
typedef int  Status;

typedef char  ElemType;
typedef struct BiTNode{
  ElemType data;
  struct BiTNode *lchild,*rchild;//左右孩子指针
} BiTNode,*BiTree;

BiTree PreCreate(char *post,char *in,int len)
{
    int leftlen,rightlen;
    char *p;
    BiTree root;
    if(len<=0)
        return NULL;
    root=(BiTNode *)malloc(sizeof(BiTNode));
    root->data=post[len-1];
//    printf("%c",root->data);
    for(p=in;p-in<len;p++)
    {
        if(*p==root->data)
        break;
    }
    leftlen=p-in;
    rightlen=len-leftlen-1;
    root->lchild=PreCreate(post+1,in,leftlen);
    root->rchild=PreCreate(post+leftlen+1,p+1,rightlen);
    return root;
}

void print(BiTree T)  // 打印后序遍历序列
{
    if(T==NULL) return;
    print(T->lchild);
    print(T->rchild);
    printf("%c",T->data);

}
int main()
{

  int len=6;
  char post[6]={'d','e','b','f','c','a'},in[6]={'d','b','e','a','f','c'};    // 存储后序和中序遍历的序列
  BiTree T;
  T=(BiTNode *)malloc(sizeof(BiTNode));
  T=PreCreate(post,in,len);
    print(T);
    printf("\n");


  return 0;

}


[ 本帖最后由 ksws0191053 于 2011-10-23 01:10 编辑 ]
搜索更多相关主题的帖子: 资料 color 二叉树 上网 
2011-10-23 01:08
快速回复:已知二叉树的中序遍历序列和后序遍历序列,还原二叉树,我的程序总是不 ...
数据加载中...
 
   



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

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