| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 386 人关注过本帖
标题:[求助]关于确定唯一二叉树,代码检不出错误
取消只看楼主 加入收藏
gujunpu
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2012-2-25
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:0 
[求助]关于确定唯一二叉树,代码检不出错误
[求助]关于确定唯一二叉树,代码检不出错误
#include <stdio.h>
#include <Stdlib.h>
#include <string.h>

typedef struct Node
{
char data;
struct Node *LeftChild;
struct Node *RightChild;
}BiTNode;
void Initiate(BiTNode **root)
{
*root=(BiTNode *)malloc(sizeof(BiTNode));
(*root)->LeftChild=NULL;
(*root)->RightChild=NULL;
}
void Visit(char item)
{
printf("%c",item);
}
void PreOrder(BiTNode *T,void Visit(char item))
{
if(T!=NULL)
{
Visit(T->data);
PreOrder(T->LeftChild,Visit);
PreOrder(T->RightChild,Visit);
}
}
void InOrder(BiTNode *T,void Visit(char item))
{
if(T!=NULL)
{
InOrder(T->LeftChild,Visit);
Visit(T->data);
InOrder(T->RightChild,Visit);
}
}
void PostOrder(BiTNode *T,void Visit(char item))
{
if(T!=NULL)
{
PostOrder(T->LeftChild,Visit);
PostOrder(T->RightChild,Visit);
Visit(T->data);
}
}
void PrintBiTree(BiTNode *T,int n)
{
int i;
if(T==NULL) return;
PrintBiTree(T->RightChild,n+1);
for(i=0;i<n;i++) printf("      ");
if(n>=0)
{
printf("--------");
printf("%c\n",T->data);
}
PrintBiTree(T->LeftChild,n+1);
}

BiTNode* CreatTree(char *pre,char *in,int len)
{
char *p,*i;
int j=0; //j表示根节点在中序中的位置
BiTNode  *T;
Initiate(&T);
T->data=pre[0];
if(len==0)return NULL;
               
while(j<len)
{
  if(in[j]==pre[0])break;
  j++;
}
p = pre+1;             //确定左子树的先序序列指针
i= in;               //确定左子树的中序序列指针
T->LeftChild=CreatTree(p,i,j);  //递归生成左子树
p = pre+j+1;               //确定右子树的先序序列指针
i = in+j+1;           //确定右子树的中序序列指针
T->RightChild=CreatTree (p,i,len-j-1);//递归生成右子树
   return T;
}

void main()
{
BiTNode *T;
int len;
char *Pre;//前序序列
char *In;//中序序列

printf("请输入前序序列:");
scanf("%s",&Pre);
printf("请输入中序序列:");
scanf("%s",&In);
len=strlen(In);
Initiate(&T);
T=CreatTree(Pre,In,len);
printf("二叉树构造成功!\n");
printf("逆时针旋转90度的二叉树如下所示:\n");
PrintBiTree(T,0);
printf("前序序列:");
PreOrder(T,Visit);
printf("\n中序序列:");
InOrder(T,Visit);
printf("\n后序序列:");
PostOrder(T,Visit);
printf("\n");
}

我想问题出现在后两个函数,可以编译出来,但是输入之后无法运行。
搜索更多相关主题的帖子: void 唯一 include 二叉树 
2012-12-10 10:42
快速回复:[求助]关于确定唯一二叉树,代码检不出错误
数据加载中...
 
   



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

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