void Exchange(int a[]){
if(a[0]==-1){/*如果根为-1说明树空,直接结束*/
return;
}
int i,j,k=2,flag;
do{
i=pow(2,k-1)-1;/*定位每层第一个*/
j=pow(2,k)-2;/*定位每层最后一个*/
flag=0;/*用flag记录当前层有没有元素*/
while(i<j){
if(a[i]!=-1||a[j]!=-1){/*遇到实体元素就进行交换*/
int temp=a[i];
a[i]=a[j];
a[j]=temp;
flag=1;
}
i++;
j--;
}
k++;
}while(flag!=0);/*flag等于零时表示该层已经没有元素,循环结束*/
}
已知二叉树采用顺序存储,结点数据为非负整数,空树为-1,编写函数Exchange,交换树中所有结点的左右子树。(C语言函数题)
于 2022-01-04 14:30:00 首次发布