美文网首页
六、树(二)、树的存储结构

六、树(二)、树的存储结构

作者: 默默_David | 来源:发表于2020-06-02 23:16 被阅读0次

数据结构目录

1.树三种不同的表示法:

  • 双亲表示法
  • 孩子表示法
  • 孩子兄弟表示法

双亲表示法

  • 双亲表示法,就是以双亲作为索引的关键词的一种存储方式
  • 我们假设以一组连续空间存储树的结点,同时在每个结点中,附设一个指示其双亲结点在数组中位置的元素
  • 也就是说,每个结点除了知道自己是谁之外,还知道它的双亲在哪里


    双亲表示法

定义:

// 树的双亲表示法结点结构定义
#define MAX_TREE_SIZE 100

typedef int ElemType;

typedef struct PTNode
{
    ElemType data;  // 结点数据
    int parent;     // 双亲位置(下标)
}PTNode;

typedef struct
{
    PTNode nodes[MAX_TREE_SIZE];
    int r;          // 根的位置(下标)
    int n;          // 结点数目
}PTree;

双亲表示法这样的存储结构,我们可以根据某结点的parent指针找到它的双亲结点,所用的时间复杂度为O(1),索引到parent位-1时,表示找到了树结点的根
缺点
如果我们要知道某结点的孩子是什么,只能遍历整个树结构

那我们对这个结构做如下改进,每个结点添加孩子的下标:


双亲表示法-孩子

如果我们又比较关心它们兄弟之间的关系呢?那么结构可以改为这样


双亲表示法-兄弟

孩子表示法

由于树中每个结点可能有多棵子树,可以考虑用多重链表来实现,这就有了如下的表示法:



孩子表示法

如图所示,每个结点除了存储自身的值与索引外,还增加了一个指针,指向子树的左子树,左子树依次指向右子树,这样,不管是孩子还是兄弟的查找都变得很容易了

双亲孩子表示法

在孩子表示法中,只找到孩子还不够完善,我们合并之前的双亲表示法,就得到了双亲孩子表示法:


双亲孩子表示法

相关文章

  • 六、树(二)、树的存储结构

    数据结构目录 1.树三种不同的表示法: 双亲表示法 孩子表示法 孩子兄弟表示法 双亲表示法 双亲表示法,就是以双亲...

  • 数据结构--树

    树的存储结构一(分为顺序存储和链式存储[二叉链表])树的存储结构二 二叉树 二叉树:是n(n≥0)个结点的有限集合...

  • 二叉树

    定义 斜树 完美二叉树 完全二叉树 存储结构 顺序存储结构 二叉链表 二叉...

  • 数据结构学习第四弹 树与森林

    在前面已经介绍过了二叉树的存储结构,那么对于一般的树来说,他的存储结构又该是怎么样的呢。 树的存储结构 树存储结构...

  • 四、树与二叉树

    四、树与二叉树 1. 二叉树的顺序存储结构 二叉树的顺序存储就是用数组存储二叉树。二叉树的每个结点在顺序存储中都有...

  • 二叉树

    二叉树简介 每个节点最多只有两个子节点的树称为二叉树: 二叉树的存储结构 二叉树一般用链式结构存储,每个节点包含两...

  • 【数据结构】二叉树及其各种遍历

    关于树的定义和存储结构可以查看上一篇文章树的定义和树的三种存储结构 一、二叉树的定义 二叉树的定义 二叉树(Bin...

  • 数据结构课程 第七周 树和二叉树

    定义 基本术语 与线性结构比较 二叉树 二叉树抽象数据类型定义 二叉树性质和存储结构 特殊形式二叉树(顺序存储时可...

  • 61_二叉树的存储结构设计

    关键词:二叉树的存储结构设计 0. 课程目标 完成二叉树和二叉树结点的存储结构设计二叉树和二叉树结点的继承关系图 ...

  • Week 3 - 树(上)

    第三周 树 主要讲的是二叉树[静态二叉树,不进行删除、增加]的存储结构与遍历方式。存储结构比较简单,还是按照Nod...

网友评论

      本文标题:六、树(二)、树的存储结构

      本文链接:https://www.haomeiwen.com/subject/jtdmzhtx.html