问题遇到的现象和发生背景
通过不断插入创建一个二叉搜索树,无法遍历输出
问题相关代码,请勿粘贴截图
#include<iostream>
using namespace std;
typedef struct BSTNode
{
int data;
struct BSTNode* lchild,*rchild;
}*BSTree;
BSTree T; // 定义一棵二叉搜索树
void InsertBST(BSTree &T,int x) // 插入
{
if(!T) // 空结点,动态申请一个地址
{
BSTNode *S = new BSTNode;
S->data = x;
S->lchild=S->rchild=NULL;
T=S;
}
else if(x<T->data) InsertBST(T->lchild,x); // 比根节点小,插入到左子树
else if(x>T->data) InsertBST(T->rchild,x); // 比根节点大,插入到右子树
}
void PreOrderTraversal(BSTree T) // 先序遍历
{
if(!T) return;
printf(" %d",T->data);
PreOrderTraversal(T->lchild);
PreOrderTraversal(T->rchild);
}
int main()
{
for(int i=0;i<9;i++)
{
int x;
cin>>x;
InsertBST(T,x);
}
PreOrderTraversal(T);
return 0;
}