typedef int ElementType; typedef struct TreeNode *BinTree; typedef BinTree Position; //链式存储结构体定义 struct TreeNode{ ElementType Data; BinTree Left; BinTree Right; }; /* 01 插入 函数名:Insert 入参:BinTree BST,ElementType X 出参:BinTree BST */ BinTree Insert( BinTree BST, ElementType X ){ if(!BST){//二叉搜索树如果为空,则初始化 BST=(BinTree)malloc(sizeof(struct TreeNode)); BST=->Date=X; BST->Left=NULL; BST->Right=NULL; }else{ if(X<BST->Data)//若小,则挂在左边 BST->Left=Insert(BST->Left,X); else if(X>BST->Data)//若大,则挂在右边 BST->Right=Insert(BST->Right,X); //若不相等,则不操作; } return BST; } /* //02 递归查找 /* //06 通序遍历 函数名:InorderTraversal 入参:(BinTreeBST) 出参:void*/ void InorderTraversal( BinTree BST ); { if(BST){ Inordertraversal(BST->Left); printf("%d",BST->Data) ; InorderTraversal(BST->Right); } printf("\n"); } int main(){ BinTree BST=NULL; BST=Insert(BST,5); BST=Insert(BST,7); BST=Insert(BST,3); BST=Insert(BST,1); BST=Insert(BST,2); BST=Insert(BST,4); BST=Insert(BST,6); BST=Insert(BST,8); BST=Insert(BST,9); InorderTraversal(BST); printf("\n"); }帮我改正这段代码
时间: 2024-03-06 18:52:05 浏览: 89
好的,我看到您提供的代码有一些错误,我帮您修改如下:
```
typedef int ElementType;
typedef struct TreeNode *BinTree;
typedef BinTree Position;
struct TreeNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
/* 01 插入 函数名:Insert 入参:BinTree BST,ElementType X 出参:BinTree BST */
BinTree Insert( BinTree BST, ElementType X ){
if(!BST){//二叉搜索树如果为空,则初始化
BST=(BinTree)malloc(sizeof(struct TreeNode));
BST->Data=X;
BST->Left=NULL;
BST->Right=NULL;
}else{
if(X<BST->Data)//若小,则挂在左边
BST->Left=Insert(BST->Left,X);
else if(X>BST->Data)//若大,则挂在右边
BST->Right=Insert(BST->Right,X);
//若不相等,则不操作;
}
return BST;
}
/* 06 中序遍历 函数名:InorderTraversal 入参:(BinTreeBST) 出参:void*/
void InorderTraversal( BinTree BST ){
if(BST){
InorderTraversal(BST->Left);
printf("%d ",BST->Data) ;
InorderTraversal(BST->Right);
}
}
int main(){
BinTree BST=NULL;
BST=Insert(BST,5);
BST=Insert(BST,7);
BST=Insert(BST,3);
BST=Insert(BST,1);
BST=Insert(BST,2);
BST=Insert(BST,4);
BST=Insert(BST,6);
BST=Insert(BST,8);
BST=Insert(BST,9);
InorderTraversal(BST);
printf("\n");
return 0;
}
```
主要修改了以下几个地方:
1. 在 `struct TreeNode` 的定义中,`BinTree` 的定义已经完成,不需要再次定义。
2. 在 `Insert` 函数中,对二叉搜索树初始化的操作有误,应该是 `BST->Data=X` 而不是 `BST=->Date=X`。
3. 在 `InorderTraversal` 函数中,函数名字写错了(多了一个 `traversal`),并且应该在输出每个节点时加上一个空格,以便阅读。
希望这次修改能够帮到您,如有其他问题,欢迎继续提问。
阅读全文