#include<stdio.h> #include <stdlib.h> typedef int DataType; typedef struct Node {DataType data; struct Node *LChild; struct Node *RChild; }BiTNode,*BiTree; //创建二叉树 void createTree(BiTree root){ int data; scanf("%d", &data); if(data == -1){ //输入-1表示结束 *root = NULL; }else{ *root = (Tree)malloc(sizeof(TreeNode)); (*root)->data = data; createTree(&((*root)->left)); createTree(&((*root)->right)); } } //先序遍历 void PreOrder (BiTree root) {if(root!=NULL){ Visit(root->data );//访问根 PreOlder(root->LChild ) ;//访问左子树 PreOlder(root->RChild ) ;//访问右子树 } } //中序遍历 void InOrder(BiTree root) {if(root!=NULL){ PreOlder(root->data ); Visit(root->data); PreOlder(root->RChild ); } } //后序遍历 void PostOlder(BiTree root) {if(root!=NULL){ PreOlder(root->LChild ); PreOlder(root->RChild ); Visit(root->data ); } } int main() { int i; createTree(BiTree root); printf("请输入你的选择"); scanf("%d",&i) ; switch(i) {case 1:printf("PreOrder (BiTree root)\n");break; case 2:printf("InOrder(BiTree root)\n") ;break; case 3:printf("PostOlder(BiTree root) ");break; } return 0; }这个代码运行不出来,可以帮我改改吗
时间: 2024-01-03 13:03:04 浏览: 108
好的,这个代码有一些问题:
1. `BiTree root` 在 `createTree` 函数中作为参数传入时,应该改为 `&root`,因为要修改这个指针变量指向的地址的值。
2. 函数名拼写错误,应该是 `PreOrder`, `InOrder` 和 `PostOrder`。
3. 在 `main` 函数中,调用函数时应该传入参数,即 `PreOrder(root)`,`InOrder(root)` 和 `PostOrder(root)`。
下面是修改后的代码:
```
#include <stdio.h>
#include <stdlib.h>
typedef int DataType;
typedef struct Node {
DataType data;
struct Node *LChild;
struct Node *RChild;
} BiTNode, *BiTree;
//创建二叉树
void createTree(BiTree *root) {
int data;
scanf("%d", &data);
if (data == -1) { //输入-1表示结束
*root = NULL;
} else {
*root = (BiTree)malloc(sizeof(BiTNode));
(*root)->data = data;
createTree(&((*root)->LChild));
createTree(&((*root)->RChild));
}
}
//先序遍历
void PreOrder(BiTree root) {
if (root != NULL) {
printf("%d ", root->data); //访问根
PreOrder(root->LChild); //访问左子树
PreOrder(root->RChild); //访问右子树
}
}
//中序遍历
void InOrder(BiTree root) {
if (root != NULL) {
InOrder(root->LChild);
printf("%d ", root->data);
InOrder(root->RChild);
}
}
//后序遍历
void PostOrder(BiTree root) {
if (root != NULL) {
PostOrder(root->LChild);
PostOrder(root->RChild);
printf("%d ", root->data);
}
}
int main() {
int i;
BiTree root = NULL;
createTree(&root);
printf("请输入你的选择:\n");
scanf("%d", &i);
switch (i) {
case 1:
printf("PreOrder:\n");
PreOrder(root);
break;
case 2:
printf("InOrder:\n");
InOrder(root);
break;
case 3:
printf("PostOrder:\n");
PostOrder(root);
break;
}
printf("\n");
return 0;
}
```
阅读全文