【求助】一个关于C语言中用createtree造树的问题

来源:百度知道 编辑:UC知道 时间:2024/06/29 01:14:48
谁能帮忙写下源代码,谢谢了!!

问题如下:
int main(int argc, char *argv[])
{
TreeNode *a = CreateTree(NULL, "a", NULL);
TreeNode *b = CreateTree(NULL, "b", NULL);
TreeNode *c = CreateTree(NULL, "c", NULL);
TreeNode *d = CreateTree(NULL, "d", NULL);
TreeNode *plus1 = CreateTree(b, "+", c);
TreeNode *multiply = CreateTree(a, "*", plus1);
TreeNode *root = CreateTree(multiply, "+", d);
return 0;
}

树状图地址如下:
http://img1.photo.163.com/AIxw1nEPhfAzlzOaKZt3SQ==/3190518861015993261.jpg
这个能看到了!!!
http://photo.163.com/photo/loveme_forever/?u=loveme_forever#m=2&ai=6755765&pi=66

#include "stdio.h"
#include "stdlib.h"
typedef char TElemType;
#define ERROR -1;

typedef struct BitNode{
TElemType data;
struct BitNode *lchild,*rchild;//左右孩子指针
}BitNode,*BitTree;

//按先序次序输入二叉树中的结点的值(一个字符),空格字符表示空树
//构造二叉树表表示的二叉树T
void CreateBitTree(BitTree &T){
char ch;
scanf("%c",&ch);
if(ch==' ') T=NULL;
else
{ T=(BitNode *)malloc(sizeof(BitNode));
T->data=ch;//生成根结点
CreateBitTree(T->lchild);//构造左子树
CreateBitTree(T->rchild);//构造右子树
}//else
}//CreateBitTree

//访问函数——打印
int visit(TElemType e)
{ printf("%c",e);
return 1;
}//visit

//先序遍历(根->左->右),visit()访问每一个树结点
//规律:最先访问data
int PreOrderTraverse(BitTree T,int (*visit)(TElemType)){
if(T)
{
if(visit(T->data))
if(PreOrderTraverse(T->lchild,visit))