树的三种存储结构

ADT Tree
{
    数据对象:
        D={ai | 1<=i<=n , n>=0 , ai为ElemType类型}
    数据关系:
        R={<ai,aj> | ai,aj 属于D, 1<=i,j<=n, 其中有且仅有一个结点没有前驱节点,其余每个节点     
        只有一个前驱节点,但可以有零个或多个后继节点}
    基本运算:
        InitTree(&t):初始化树,造一棵空树t
        DestroyTree(&t):销毁树,释放树t的所占空间
        TreeHeight(t):求树高度
        Parent(t,p):求树t中p所指结点的双亲结点
        Borther(p):求树t中p所指结点的所有兄弟结点
        Sons(t,p):求树t中p所指结点的所有子孙结点
        ...
}

树的存储结构

双亲存储结构

typedef struct
{
    ElemType data;
    int parent;
}PTree[MaxSize];

孩子链存储结构

typedef struct node{
    ElemType data;
    struct node *sons[MaxSize];
}TSonNode;

孩子兄弟链存储结构

typedef struct tnode
{
    ElemType data;
    struct tnode* hp; //兄弟
    struct tnode* vp; //孩子
}TSBNode;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值