数据结构顺序二叉树C语言

#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;
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值