2019独角兽企业重金招聘Python工程师标准>>>
1、qsort用法又错了:
//qsort(node,sizeof(node),sizeof(int),cmp);//错误!sizeof(node) = 4不是数组长度!
qsort(node,N,sizeof(int),cmp);
2、数组长度由输入值决定:
int * node;
int N;
scanf("%d", &N);
node = new int[N];
3、重要的关于生成完全二叉查找树:
http://blog.csdn.net/IAccepted/article/details/20726067
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int * node;
int * tree;
int N,pos;
int cmp(const void * a, const void *b){
return (*(int *)a - *(int *)b);
}
void build(int root){
if(root > N) return;
int lchild = root<<1;
build(lchild);
tree[root] = node[pos++];
int rchild = (root<<1)+1;
build(rchild);
}
int main(){
//freopen("in.txt","r",stdin);
int i;
pos = 0;
scanf("%d", &N);
node = new int[N];
for(i=0; i<N; i++){
scanf("%d", &node[i]);
}
//qsort(node,sizeof(node),sizeof(int),cmp);//错误!sizeof(node) = 4不是数组长度!
qsort(node,N,sizeof(int),cmp);
tree = new int[N];
//build(0);//不能以0开始,因为2*0 = 0
build(1);
printf("%d",tree[1]);
for(i=2; i<=N; i++){
printf(" %d",tree[i]);
}
return 0;
}