#include <iostream>
using namespace std;
#define Elemtype char
#define maxSize 100
typedef struct{
Elemtype data[maxSize+1];
int length;
}seqBiTree;
// 这种顺序二叉树是只可以存储完全二叉树或者满二叉树的,
// 或者说只有这两类的二叉树才会有最大的存储效率,
// 若需要存储其他类型的普通的二叉树,也必须要按照这种方式去存储。
int initSeqBiTree(seqBiTree &T) {
T.length = 0;
}
bool createSeqBiTree(seqBiTree &T, Elemtype tree[], int n) {
if(tree == NULL) return false;
else {
for(int i = 1; i <= n; i ++) {
T.data[i] = tree[i-1];
T.length ++;
}
}
}
bool getLeftChild(seqBiTree T, int i, Elemtype &e) {
if(i <= T.length/2) {
e = T.data[i*2];
return true;
}
else return false;
}
bool getRightChild(seqBiTree T, int i, Elemtype &e) {
if(i > T.length/2 || (i == T.length && T.length % 2 == 0)) return false;
else {
e = T.data[i*2+1];
return true;
}
}
void outputSeqBiTree(seqBiTree T) {
for(int i = 1; i <= T.length; i ++) {
cout << T.data[i] << " ";
}
cout << endl;
}
int main() {
char tree[] = {'a', 'b', 'c', 'd'};
seqBiTree T;
initSeqBiTree(T);
createSeqBiTree(T, tree, 4);
Elemtype e;
getLeftChild(T, 2, e);
cout << e << endl;
getRightChild(T, 2, e);
cout << e << endl;
outputSeqBiTree(T);
cout << T.length;
return 0;
}
数据结构顺序二叉树C语言
最新推荐文章于 2024-07-06 14:24:03 发布