今天做题做了好久,其实不难。做的题目是有关排序二叉树的问题,涉及到排序二叉树的插入问题。当然排序二叉树的插入可以写成递归的方式,有关伪代码如下:
typedef struct BST{
int data;
BST *left,*right;
}BST;
void Insert(BST *root,int num){
if(root==NULL){
root = (BiTNode *)malloc(sizeof(BiTNode));
root->data = num;
root->left=NULL;
root->right=NULL;
}
else{
if(root->data>num)
root->left=Insert(root->left,num);//这个roo->left可以将树链接起来了
else
root->right=Insert(root->right,num);
}
}
非递归写法:
void Insert(BST *&point,int num){
if(point==NULL){
point=(BST *)malloc(sizeof(BST));
point->data=num;
point->left=NULL;
point->right=NULL;
}
else{
BST *temp=point;
BST *temp_p=NULL;
while(temp!=NULL){
temp_p=temp;
if(num<temp->data)
temp=temp->left;
else
temp=temp->right;
}
temp=(BST*)malloc(sizeof(BST));
temp->data=num;
temp->left=NULL;
temp->right=NULL;
//在此添加temp_p和temp的大小判断
//cout<<temp_p->data<<endl;
if(temp_p->data > temp->data){
temp_p->left=temp;
}
else
temp_p->right=temp;
}
}