#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#define SIZE sizeof(struct Node)
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <math.h>
#define SIZE sizeof(struct Node)
struct Node{
int depth;
int value;
int Morton;
bool exist;
bool notnull;
struct Node *last;
struct Node *p[2][2];
};
void freeetra(struct Node *headp);//释放空节点的内存。
struct Node *creatquadtree(int a[8][8]);//建立一个结构为四叉树的链表,且存储代表栅格数据的一个8×8的数组的值。
void main(){
int a[8][8];
int i,j;
for(i=0;i<8;i++){
for(j=0;j<8;j++){
a[i][j]=rand()%2;
}
}
printf("随机生成的栅格数据为:\n");
for(i=0;i<8;i++){
for(j=0;j<8;j++){
printf("%5d",a[i][j]);
}
printf("\n");
}
struct Node *p=creatquadtree(a);
freeetra(p);
}
//释放内存
void freeetra(struct Node *headp){
int i,j,m,n,x,y;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
for(m=0;m<2;m++){
for(n=0;n<2;n++){
for(x=0;x<2;x++){
for(y=0;y<2;y++){
if(headp->p[i][j]->p[m][n]->p[x][y]->exist){
free(headp->p[i][j]->p[m][n]->p[x][y]);
}
}
}
if(headp->p[i][j]->p[m][n]->exist){