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

我想问题出现在后两个函数,可以编译出来,但是输入之后无法运行。
搜索更多相关主题的帖子: include 唯一 void 二叉树 
2012-12-09 23:34
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6814
专家分:42393
注 册:2010-12-16
收藏
得分:20 
void main()
{
    BiTNode *T;
    int len;
    // char *Pre;//前序序列
    // char *In;//中序序列
     char Pre[100];//前序序列
     char In[100];


    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");
}

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-10 12:22
gujunpu
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2012-2-25
收藏
得分:0 
回复 2楼 yuccn
非常非常感谢,但是我还想知道为什么这里不能用指针而要写出拥有确定空间的数组呢。
2012-12-10 12:30
gujunpu
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2012-2-25
收藏
得分:0 
回复 2楼 yuccn
不好意思,我是新手不知道怎么结贴,我好像只有10分,但是悬赏了20分,刚刚又失误没有给你分,有其他的方式给你吗
2012-12-10 12:32
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6814
专家分:42393
注 册:2010-12-16
收藏
得分:0 
回复 3楼 gujunpu
不是不能用指针,只是你的那个指针没有指向一个有效的内存。

你可以先伸出一个内存,并且把指针指向它,就行了
不过你用完之后记得要释放咯

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-10 12:34
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6814
专家分:42393
注 册:2010-12-16
收藏
得分:0 
void main()
 {
     BiTNode *T;
     int len;
     char *Pre = new char[100];//前序序列
     char *In = new char[100]; //中序序列
 
    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");

     delete []Pre;
     delete []In;
 }
这样也行

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-10 12:36
gujunpu
Rank: 1
等 级:新手上路
帖 子:23
专家分:3
注 册:2012-2-25
收藏
得分:0 
回复 6楼 yuccn
谢谢,明白了。
2012-12-12 10:32
wu_jian_long
Rank: 2
等 级:论坛游民
帖 子:4
专家分:15
注 册:2012-12-7
收藏
得分:0 
参考一下
2012-12-12 23:14
快速回复:[求助]关于确定唯一二叉树,代码检不出错误
数据加载中...
 
   



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

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