博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
树(基本概念及存储结构)
阅读量:5216 次
发布时间:2019-06-14

本文共 1262 字,大约阅读时间需要 4 分钟。

树的定义—-递归(两者相联系)

根节点:唯一
节点的度:节点拥有的子树数。度为0—>称为终端节点或叶节点
树的度:树内各节点的度的最大值
内部节点:除根节点外的节点
这里写图片描写叙述

孩子(child):节点的子树的根 称为该节点的 孩子,反过来,称为双亲(parent)

兄弟(sibling):同一双亲的孩子之间的关系
节点的祖先:从根到该节点所经分支上的全部节点
节点层次:根为第一层,根的孩子为第二层
树的深度(Depth):树中节点的最大层次
这里写图片描写叙述

森林(Forest):是m(m>0)棵互不相交的树的集合

这里写图片描写叙述

树的存储结构(简单顺序结构无法满足一对多结构的存储)

1)双亲表示法:
关键在于“除根节点外,每个节点都有且仅有一个双亲,将树从下往上看”
节点:data(数据) | parent(指针,指向其双亲)

/*双亲表示法:树的结构定义。这样的方式找双亲非常easy,但找孩子就非常麻烦,需遍历整个结构*/typedef int ElemType;typedef struct Node{    ElemType data;    int parent;  // 数组下标,根节点的位置域存放-1} Tnode;typedef struct{    Tnode nodes[MAX_SIZE]; // 节点数组    int r,n;  // 根的位置和节点数} Tree;

2)孩子表示法:一个顺序存储结构与链式存储结构的结合

/*孩子表示法*/typedef struct Node{    int child;             // 存放一个节点的孩子的数据    struct Node *next;     // 指向该节点的还有一个孩子。假设没有置空} * Childptr;typedef struct{    ElemType data;         // 存放一个节点数据    Childptr firstchild;   // 指向他的第一个孩子的位置} Tbox;typedef struct{    Tbox nodes[MAX_SIZE];  // 上面的Tree box 用一个数组来包括。即每个Tbox节点就是一个元素    int r,n;               // 根节点的位置和节点数} Tree;

可对比下图理解:

这里写图片描写叙述

3)孩子兄弟表示法 :(最经常使用)

声明一个节点,一个data域,两个指针域:一个指向孩子,还有一个指向其兄弟

/*孩子兄弟表示法*/typedef struct Node{    ElemType data;    struct Node *firstchild,*rightsib;  // 一个指向孩子,还有一个指向其兄弟,还能够再加一个指针域用来指向其parent;}CSNode,* Tree;

/点滴积累,我的一小步O(∩_∩)O~/

转载于:https://www.cnblogs.com/claireyuancy/p/7086557.html

你可能感兴趣的文章
django 代码
查看>>
云平台-云计算的认识
查看>>
Python 第四阶段 学习记录之----多线程
查看>>
11g RAC R2 日常巡检--Grid
查看>>
Text Style Transfer论文笔记
查看>>
CC3200模块的内存地址划分和bootloader,启动流程(二)
查看>>
Flex 全屏显示方法
查看>>
ubuntu 16.04 安装chrome的方法
查看>>
redis 使用 get 命令读取 bitmap 类型的数据
查看>>
Python高级语法之:一篇文章了解yield与Generator生成器
查看>>
perl debug
查看>>
第一模块·开发基础-第2章·数据类型、字符编码、文件操作
查看>>
Ecological Premium
查看>>
命名管道 问题:信号灯超时问题
查看>>
视频换脸-Deepfakes代码解读和训练说明
查看>>
轻快的VIM(一):移动
查看>>
【bzoj4571 scoi2016】美味
查看>>
文件操作类2
查看>>
SQL技术内幕-8 使用WITH AS提高性能简化嵌套SQL
查看>>
'System.Web.Http.GlobalConfiguration' does not contain a definition for 'Configure'
查看>>