做影视外包的网站,网络设计方案书主要包括哪些内容,百度识图搜索图片来源,做网站多钱一年转载自 我是一棵“树” 我是一颗树#xff0c;之前我们数据结构家族中的一个小朋友——“栈” 已经给你们介绍过的我们这个家族了#xff08;我是一个“栈”#xff09;。之所以叫栈为小朋友#xff0c;是因为我和他的爸爸——数组是平辈的。
之所以存在我们这样一个家庭之前我们数据结构家族中的一个小朋友——“栈” 已经给你们介绍过的我们这个家族了我是一个“栈”。之所以叫栈为小朋友是因为我和他的爸爸——数组是平辈的。
之所以存在我们这样一个家庭最主要的原因是数组他们家庭虽然很强大但是有一定的局限性。大家都知道无论是数组、链表以及他们家的那几个小娃娃栈、队列等存储的数据之间都只有简单的前后顺序关系。
既然说到这了那就在给你们科普一下整个数据结构大家族吧。毕竟你们认识的那个“栈”只是个小晚辈对我们家族的历史什么的都不是很了解。
数据结构家族
数据结构主要有两个作用第一个是存储数据第二个是可以反应所存储的数据之间的逻辑关系注意逻辑关系并不是他们在计算机中存储的物理位置关系哦。所以根据大家存储的数据的逻辑结构的不同主要可以分为这个几个大的分支 集合
他们家帮别人存储的数据之间什么关系都没有唯一的关系可能就是同处于同一个集合了。 线性结构 他们家呢帮别人存储的数据之间是有顺序的数据之间在逻辑上是首尾相接的连续保存的。所以元素之间存在着一对一的关系。比如你们认识的数组家族就是线性结构的。 树形结构
嘿这就是我们的家族分支啦我们存储元素存在着一对多的相互关系。 图形结构
图形结构分支是一种复杂的数据结构。数据元素间的关系是任意的。任意两个数据元素间均可相关联。 大家了解的数组、队列、栈、链表他们都属于线性结构的分支的。今天的主角也就是我和我的“树”家族是树形结构这个大的分支中的。
也许你已经猜到了我是整个数据结构大家族的树形结构这一分支的族长。作为一个庞大的家族分支我们当然具备整个数据结构家族的基本功能——数据存储。另外整个树形分支主要用来保存具有树形结构的数据集合。说的白一点就是我们帮别人存储的数据是有层次关系的。就像自然界中的一颗倒置的树一样。
先来说下找我们保存数据的一些限制和要求吧。我们帮别人保存的每个元素我们称之为节点而我们一般有一个特定的结点被称为根节点其余的结点都叫非根节点。下面给你看一颗标准的树然后通过这张图再来介绍下什么是叶节点、父节点等概念。 H节点是O和L的父节点O和L是H节点的子节点。
H节点是根节点因为他没有父节点。
I、S和L节点是叶结点因为他们没有子节点。
I和S是兄弟节点因为他们的父节点都是O节点。
好了说好了这些了该带你见一见我的家族成员了。作为数据结构的树家族的大家族我有很多后代。先来给你看下我的家谱 我有两个儿子大儿子有序树、小儿子无序树。大儿子是家族的顶梁柱承担起了家族的很多工作。而我的小儿子就是一个比较自由的孩子无忧无虑的什么也不管所以大家有时候也叫他自由树。
先来说说这个我十分宠爱的小儿子——无序树。 无序树
无序树他也是个树形结构除了树中的父子节点之间有关系以外同一个父节点的所有子节点之间是没关系的在树中这种关系就是顺序比如谁在前谁在后。所以他叫无序树。另外我的这个小儿子由于太过自由至今都没给我生出个娃娃来。所以我的小儿子是个孤家寡人。
再来详细说说他的数据存储方面的事情前面说了他存储的数据之间只有父子节点间有关系。如果你让他帮你存储A、B、C三个数据的话1个父节点2个子结点的情况有 3 种。 无论两个子节点位置关系如何都是同一棵树。即A-B-C和A-C-B被认为是同一棵树。 有序树
再来介绍一下我的大儿子整个树家的顺位继承人。他真的做到了一个长子应该做的所有事情他和他的孩子们几乎包揽了树家族的所有工作内容。
他和无序树的区别比较明显就是在有序数中子节点之间是有顺序关系的。如果你让我的大儿子帮你存储A、B、C三个数据的话1个父节点2个子结点的情况有 6 种。 只要两个节点的顺序掉换一下又是一个新的树。A-B-C和A-C-B被认为是两棵不同的树。
从上面的家族图谱中可以发现我的大儿子有序树也有很多孩子的。其中我比较出名的三个孙子分别是二叉树、霍夫曼树和B树等。
现在的年轻人都很有个性的帮别人存储数据的时候都有很多要求呢不过也好年轻人嘛就应该有点性格。也得益于他们的各自的特性树家族才能如此强大。
关于有序树的几个晚辈的介绍后面让他们自己来吧我这把老骨头说了这么多也累了。