二叉搜索树插入出现问题,只能插入第一个元素
#include
#include
typedef int ElementType;
typedef struct TNode *Position;
typedef Position BinTree;
struct TNode{
ElementType Data;
BinTree Left;
BinTree Right;
};
void PreorderTraversal( BinTree BT );
BinTree Insert( BinTree BST, ElementType X );
int main()
{
BinTree BST;
ElementType X;
int N, i;
BST = NULL;
scanf("%d", &N);
for ( i=0; i
scanf("%d", &X);
BST = Insert(BST, X);
}
printf("Preorder:"); PreorderTraversal(BST); printf("\n");
return 0;
}
/* 你的代码将被嵌在这里 */
void PreorderTraversal( BinTree BT )
{
if(!BT) return;
printf("%d ",BT->Data);
PreorderTraversal(BT->Left);
PreorderTraversal(BT->Right);
}
BinTree Insert( BinTree BST, ElementType X )
{
if(!BST)
{
BinTree t=(TNode*)malloc(sizeof(TNode));
t->Data =X;
t->Left=t->Right=NULL;
BST=t;
}
else if(X<BST->Data) Insert(BST->Left,X);
else if(X>BST->Data) Insert(BST->Right,X);
return BST;
}
如下修改试试
BinTree Insert( BinTree BST, ElementType X )
{
if(BST == NULL)
{
BinTree t=(TNode*)malloc(sizeof(TNode));
t->Data =X;
t->Left=t->Right=NULL;
BST = t;
}
else if(X<BST->Data)
BST->Left = Insert(BST->Left,X);
else if(X>BST->Data)
BST->Right = Insert(BST->Right,X);
return BST;