| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 646 人关注过本帖
标题:帮忙查一查这个遍历树的程序错在哪了---感激不尽
只看楼主 加入收藏
无极限
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2005-10-29
收藏
 问题点数:0 回复次数:4 
帮忙查一查这个遍历树的程序错在哪了---感激不尽

#include<stdio.h>
#include<malloc.h>
#define NULL 0

typedef struct bitnode
{ char data;
struct bitnode *lchild;
struct bitnode *rchild;
}bitnode;

void (*visit)() /*define a function pointer*/

bitnode *CreatBitree(bitnode *T)
{ char ch;
bitnode *p=NULL;
p=(bitnode*)malloc(sizeof(bitnode));
printf("Enter letters:");
scanf("%c",&ch);

if(ch==' ')
{
p=NULL;
T=p;
}
else
{
if(!p)
printf("Init error!");
else
{
T=p;
T->data=ch;
T->lchild=CreatBittree(T->lchild);
T->rchild=CreatBittree(T->rchild);
}
}
return(T);
}

void PrintElem(char e)
{
printf("%c",e);
}

void PreTra(bitnode *T,visit)
{
if(T) visit(T->data);
if(T->lchild) PreTra(T->lchild,PrintElem);
if(T->rchild) PreTra(T->lchild,PrintElem);
else
printf("Can't visit rchild.");

}

void main()
{ bitnode *T;
bitnode *T1;
T1=CreatBitree(T);
PreTrv(T,PrintElem);
}

搜索更多相关主题的帖子: 遍历 感激不尽 
2005-10-29 22:34
84819986
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2005-10-30
收藏
得分:0 
好长 估计我不行!
2005-10-30 10:34
七七
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-3-30
收藏
得分:0 

#include "malloc.h"
#include "stdio.h"
#define OK 1
#define ERROR 0
#define OVERFLOW -2

typedef char TElemType;
typedef int Status;
typedef struct BiNode{
TElemType data;
struct BiNode *lchild, *rchild;
}BiNode, *BiTree;

Status pnt(TElemType e){
printf(" %c",e);//打印
return OK;
}//pnt

Status PreOrderTraverse(BiTree T, Status (*Visit)(TElemType e)){
if(T){
if(pnt(T->data))
if(PreOrderTraverse(T->lchild, Visit))
if(PreOrderTraverse(T->rchild, Visit))
return OK;
return ERROR;
}
else
return OK;
}//PreOrderTraverse

Status InOrderTraverse(BiTree T, Status (*Visit)(TElemType e)){
if(T){
if(InOrderTraverse(T->lchild, Visit))
if(pnt(T->data))
if(InOrderTraverse(T->rchild, Visit))
return OK;
return ERROR;
}
else
return OK;
}//InOrderTraverse

Status CreatBiTree(BiTree &T){
char ch;
scanf("%c", &ch);
if(ch=='#')
T=NULL;
else{
if(!(T=(BiNode *)malloc(sizeof(BiNode))))
return OVERFLOW;
T->data=ch;
CreatBiTree(T->lchild);
CreatBiTree(T->rchild);
}
return OK;
}//CreatBiTree

void main(){
BiTree T;
CreatBiTree(T);
printf("\n");
PreOrderTraverse(T, pnt);
printf("\n");
InOrderTraverse(T, pnt);
}

这个我写的一个和你功能一样的程序 只是加多了个中序遍历
运行成功的
你看看吧

[此贴子已经被作者于2005-10-30 14:38:09编辑过]


2005-10-30 14:37
知为
Rank: 1
等 级:新手上路
帖 子:112
专家分:0
注 册:2005-10-21
收藏
得分:0 

kao 这么强

什么时候能和你们一样


2005-10-30 22:42
无极限
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2005-10-29
收藏
得分:0 
多谢高手指点了

2005-10-31 22:39
快速回复:帮忙查一查这个遍历树的程序错在哪了---感激不尽
数据加载中...
 
   



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

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