利用队列将一维数组变成完全二叉树

来源:互联网 发布:电吉他效果器软件 编辑:程序博客网 时间:2024/06/05 17:21

#include<iostream>
using namespace std;
typedef struct node
 int data;
  struct node*lchild,*rchild;
} btree;
btree *Q[100];  
btree *CREATREE(int a[],const int n){
btree *x= new btree[n];
for (int m=0; m<n ; m++)
   x­.data=a;

   inti = 0,front = 0,rear = 1;
   btree *q =NULL;
   Q[rear] =&x[i];  // a[i] 进队列
   while (front <rear){ 
        front = front+1;
        q = Q[front];   // a[i] 出队列
        if (i+1<n){
         rear= rear+1;
        Q[rear] = &x[i+1];
        q->lchild = Q[rear];
         // a[i+1] 进队列
        else q->lchild = NULL;
        if (i+2<n){
        rear = (rear+1);
        Q[rear] = &x[i+2];  // a[i+2]进队列
        q->rchild = Q[rear];
        }
        else q->rchild = NULL;
        i = i+2;
    }
 return x;
}
void main()
 
   inta[]={1,4,3,45,23,6,7,9,15,56};
   btree *o=CREATREE(a,10);
   cout<<o->lchild->rchild->lchild->data;
}


0 0
原创粉丝点击