注意:
在顺序存储结构显然要从数组下标1开始存储树种的结点,如果从数组下标0开始储存,则不满足二叉树的性质(比如结点A储存在0下标位置上,则无法根据其性质来计算孩子结点在数组中的位置)
#include<stdio.h>
#include<stdlib.h>
#define maxSize 100
typedef char ElemType;
/*顺序二叉树*/
typedef struct STree{
ElemType bitTree[maxSize];
int pointer;
}STree;
/*初始化*/
void Init_STree(STree &T){
for(int i=0;i<maxSize;i++)
T.bitTree[i]='0';
T.pointer=0;
}
/*插入根结点*/
int Insert_root(STree &T,ElemType e){
T.bitTree[1]=e;
T.pointer++;
}
/*插入左结点*/
int Insert_left(STree &T,int i,ElemType e) {//在某个i结点的左孩子插入元素e
if(i>=maxSize||i<1) {
printf("插入结点不符合二叉树性质要求\n");
return -1;
}
T.bitTree[(i+1)*2]=e;
T.pointer++;
return 1;
}
/*插入右键点*/
int Insert_right(STree &T,int i,ElemType e){//在某个i结点的右孩子插入元素 e
if(i>=maxSize||i<1) {
printf("插入结点不符合二叉树性质要求\n");
return -1;
}