树的存储结构

本文介绍了树的逻辑结构和不同的存储方法,包括树的定义、双亲表示法、孩子链表以及孩子兄弟表示法。双亲表示法中,每个结点包含数据域和双亲域;孩子链表通过单链表存储子节点;孩子兄弟表示法利用二叉链表指向第一个孩子和下一个兄弟。
摘要由CSDN通过智能技术生成

树的定义

树的数据逻辑结构是一对N的,除了根节点,每个元素只有一个前驱,但是可以有多个后继,具有层次关系,像家谱就是一个树的例子。
树是有n个结点的有限集合,当n大于零时,这个树有且仅有一个称为根的结点,从根节点延申出来的元素可以时n个,同时可以再延申。n=0时,该树就是空树。
树的第一层就是根结点,第二层都是称为第一层的孩子,第一层为第二层的父结点。第三层的都称为第二层的孩子,以此类推。
结点的分支的个数称为结点的度
终端结点:没有分支的结点叫做终端结点,也就是叶子
树中结点的最大层次称为树的深度或树的高度
有序树:如果树中的各子树的数据从左到右有序,改变任意一个元素,该树就改变。这样的树称为有序树。反之,无序的树称为无序树

森林是m和互不相交的树的集合。

双亲表示法

定义的结点包括两个领域,一个数据域存放数据信息,双亲域用来只是本结点双亲结点再数组中的位置。
用双亲表示法创建一个结点:

typedef struct parent
{
    int data;//数据域
    int parent;//双亲的位置域
}PTNode;

树结构:

#define SIZE 100
typedef struct
{
    PTnode nodes[SIZE];
    int r;/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值