数据结构

数据结构

1.树

定义:

树(Tree)是n个(n>=0)个结点的有限集。

n=0时称为空树。

在任意一颗非空树中:

(1) 有且仅有一个特定的称为根(root)的的节点

(2) 当n>1时,除根节点外,其余节点可分为m(m>0)个互不相交的有限集(T1,T2,,,,Tm),其中每个集合本身又是一颗树,称为根的子树

image-20240323113327011

对于树的定义还需要注意两点:

1.n>0时跟根节点时唯一的,不可能存在多个根节点

2.m>0时,子树的个数没有限制,但是他们一定是互不相交的

树的度

结点拥有的子树称为结点的度(Degree),度为0的结点称为叶结点,度不为0的结点称为分支结点,除根节点外,分支结点也被称为内部结点

image-20240323114121984

结点的子树的根称为该结点的孩子(Child),相应地,该结点称为孩子的双亲(Parent),同一个双亲的孩子直接互称为兄弟(Slibing)。结点的祖先是从根到该结点所经分支上的所有结点。所以对于H来说,D,B,A都是他的祖先,反之则为子孙。B的子孙有D,G,H,I。

image-20240323115343723

结点的层次

结点的层次(Level)从根开始定义起,根为第一层,根的孩子为第二层。其中双亲在同一层的结点互为堂兄弟。显然图中DEF都是堂兄弟,而GHI与J也是堂兄弟。树中结点的最大层次称为树的圣都(Depth)活高度,当前数的深度为4.

image-20240323115659581

注:若将树中的每个结点的各子树看成是从左到右有次序的(既不能互换),则称该树为有序树(OrderedTree);否则称为无序树(UnorderedTree)。注意:若不特别指明,一般讨论的树都是有序树

2.二叉树

定义:

二叉树是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的,分别称为根结点的左子树和右子树组成

image-20240323125440478

斜树

顾名思义,斜树一定要是斜的,但是往哪斜还是有讲究,所有的结点都只有左子树的二叉树叫左斜树。反之交右斜树

斜树有很明显的特点,就是每一层都只有一个结点,结点的个数与二叉树的深度相同。

线性表结构就可以理解为是树的一种极其特殊的表现形式。

特点:

1.任意结点的左结点不为空时,左节点的值小于根结点值

2.右结点不为空时,右结点的值大于根结点值

依次存入数据,如果是递增或是递减,就会出现斜树,既退化成链表的形式(链表 ==> 查询慢)

image-20240323125633362

满二叉树

在一颗二叉树中。如果所有分支结点都存在于左子树和右子树,并且所有叶子都在同一层上,这样的树称为满二叉树。

满二叉树的特点有:

  1. 叶子只能出现在最下一层。出现在其它层就不可能达成平衡。
  2. 非叶子结点的度一定是2。
  3. 在同样深度的二叉树中,满二叉树的结点个数最多,叶子数最多。

image-20240323125916020

完全二叉树

  • 对一颗具有n个结点的二叉树按层编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这颗二叉树称为完全二叉树。

  • 这是一种有些理解难度的特殊二叉树。首先从字面上要区分,“完全和”满“的差异,满二叉树一定是完全二叉树,反之不一定成立。

image-20240323130327605

3.B树

4.B+树

5.红黑树

posted @   zhangyf1121  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类
点击右上角即可分享
微信分享提示