关于二叉树的问题~~各位高人!!谢谢!!

来源:百度知道 编辑:UC知道 时间:2024/05/31 12:12:11
这个关于二叉树的建立 前、中、后根遍历的c程序 在VC++里面可以运行 但运行后出现的那个界面要怎么用???是不是要先输入建立一颗树?怎样操作呢?执行以后 ?

#include <stdio.h>
#include <malloc.h>
#define qsize 10

typedef struct node
{ char data;
struct node *lchild;
struct node *rchild;
} bnode;
typedef struct node *blink;

blink creat()
{
blink bt;
char ch;
ch=getchar();
getchar();
if(ch!='#')
{
bt=(bnode*)malloc(sizeof(bnode));
bt->data=ch;
bt->lchild=creat();
bt->rchild=creat();
}
else
bt=NULL;

return bt;
}
void preorder(blink bt)
{ if(bt)
{
printf("%c",bt->data);
preorder(bt->lchild);
preorder(bt->rchild);
}
}
void inorder(blink bt)
{ if(bt)
{
inorder(bt->lchild);
printf("%c",bt->data);
inorder(bt->rchild);
}
}
void

程序运用了递归思想,最好先看看简单的递归,有点概念,这样看懂创建过程就不是难事了,创建树的时候是先左后右。(对于每个节点,他的左节点和右节点可以看成是两棵新的树的根节点)输入# 代表该节点为空,要用语言解释清楚并不容易,举几个例子自己领悟一下。(为简单起见,每个节点的内容都为a)
假如要创建只有一个根节点的树,则输入 a # #
假如要创建只有一个左节点的树,则输入 a a #
假如要创建只有一个右节点的树,则输入 a # a

回答补充:
我复制了程序,可以运行的,结果也正常。如果在VC下运行的话,需要小作修改,把main()改成int main() 最后加上return 0;