问题遇到的现象和发生背景
二叉搜索树插入出现问题,只能插入第一个元素
问题相关代码
#include <stdio.h>
#include <stdlib.h>
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<N; 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;
}