题目描述
知识点
BTS的建树与插入
结果
实现
码前思考
- 非常简单的BTS建树模板题,就是在原有的
insert
上进行一些修改哦;
代码实现
#include "bits/stdc++.h"
using namespace std;
const int maxn = 110;
struct node{
int data;
node* lchild;
node* rchild;
node(int _data):data(_data),lchild(NULL),rchild(NULL){}
};
int input[maxn];
int n;
void insert(node* &root,int x,int father){
if(root == NULL){
root = new node(x);
printf("%d\n",father);
return;
}
if(root->data > x){
insert(root->lchild,x,root->data);
}else{
insert(root->rchild,x,root->data);
}
return;
}
node* create(int input[],int n){
node* root = NULL;
for(int i=0;i<n;i++){
insert(root,input[i],-1);
}
return root;
}
int main(){
while(~(scanf("%d",&n))){
for(int i=0;i<n;i++){
scanf("%d",&input[i]);
}
//创建二叉树
node* root = create(input,n);
}
return 0;
}
码后反思
- 函数要时常记得返回,即使是
void
函数,比如上面的代码中,我第一次就忘记了对if(root == NULL)
里面进行返回了。。。