主题:求二叉树的创建,遍历,应用的源程序(表示一个表达式,求树的深度),谢了。
byf1986
[专家分:20] 发布于 2007-04-24 16:34:00
各位大虾,帮忙了!
回复列表 (共3个回复)
沙发
jrl123 [专家分:130] 发布于 2007-04-24 19:39:00
#include <stdio.h>
typedef struct btnode
{
char data;
struct btnode *lchild;
struct btnode *rchild;
}bttree;
void tree(bttree **t)
{
char ch;
scanf("%c",&ch);getchar();
if (ch=='0')
{
*t=NULL;
return;
}
else
{
(*t)=(bttree*)malloc(sizeof(bttree));
(*t)->data=ch;
tree(&(*t)->lchild);
tree(&(*t)->rchild);
}
}
void Inordertraverse(bttree *t)
{
if (t->data!=NULL)
{
Inordertraverse(t->lchild);
printf("%c",t->data);
Inordertraverse(t->rchild);
}
}
int hightree(bttree *t)
{int H,H1,H2;
if(t==NULL) H=0;
else
{H1= hightree(t->lchild);
H2= hightree(t->rchild);
H=(H1>H2?H1:H2)+1;
}
return H;
}
main()
{int H;
bttree *t;
tree(&t);
printf("\n");
Inordertraverse(t);
H=hightree(t);
printf("%d",H);
}
板凳
byf1986 [专家分:20] 发布于 2007-05-14 14:23:00
谢谢啦,
小弟先试试啊!
3 楼
水是醒了的冰 [专家分:0] 发布于 2007-05-17 23:31:00
那二叉树我也是那样创建的,如下:
#include<iostream>
#include<stdlib.h>
using namespace std;
#define stack_init_size 100
#define stackincrement 10
#define OVERFLOW -1
typedef int status;
typedef int telemtype;//数据类型
typedef struct bitnode
{
telemtype data;
struct bitnode *lchild,*rchild;
}bitnode,*bitree;
int createbitree (bitree &T)
{
char ch;
fflush(stdin);
getchar();
cin>>ch;
if((ch=getchar())==' ') T=NULL; //空树
else{ //读人非空格
if(!(T=(bitnode *)malloc(sizeof(bitnode)))) exit(OVERFLOW); //生成结点
T->data=ch;
createbitree(T->lchild);
createbitree(T->rchild); //构造右子树
}
return 1;
}
但是却不能生成,为什么??
比如说输入一个先序二叉树ABD C E ,这就是一个二叉树,但是最后按了两个空格键后却没有直接返回1,而是可以继续输入字符,不知道为什么,请指导,谢谢,知道的请速回!
我来回复