#include<iostream>
#include<stdio.h>
#include<cstring>
#include<stdlib.h>
#include<queue>
using namespace std;
typedef struct BiNode{
int data;
BiNode *lchild,*rchild;
}BiNode,*BiTree;
BiNode *Creat(int a[],int i,int n){
if(i>=n){ //当超过数组长度时当前结点为空,即上一级节点为叶子节点
return NULL;
}
BiNode *t=(BiNode*)malloc(sizeof(BiNode));
t->data=a[i];
t->lchild=Creat(a,2*i+1,n);//递归创建左子树
t->rchild=Creat(a,2*i+2,n);//递归创建右子树
return t;
}
void change(int a[],int n,BiTree &T){
T=Creat(a,0,n);
}
void InOrder(BiTree T){
if(T){
InOrder(T->lchild);
cout<<T->data;
InOrder(T->rchild);
}
}
void preOrder(BiTree T){
if(T){
cout<<T->data;
preOrder(T->lchild);
preOrder(T->rchild);
}
}
int main(){
BiTree T;
int a[10]={1,2,3,4,5,6,7,8,9,10};
change(a,10,T);
InOrder(T);
cout<<endl;
preOrder(T);
return 0;
}
将顺序存储的数组转换为完全二叉树
最新推荐文章于 2024-05-27 11:13:45 发布