美文网首页
树结构基础概念

树结构基础概念

作者: Franck_ | 来源:发表于2020-10-29 07:45 被阅读0次

1 定义

为什么要有树结构?

在维护一个动态的数据集合(需要增删查)的时候,二叉树(树结构的一种)可以在增删查的时候时间复杂度都是O(logn)。

而线性的数据结构则做不到,原因如下:

例如下面这些数据:


无序数据结构.png

如果使用的是数组结构:
增加元素直接在最后添加一个元素即可,复杂度是O(1)。
删除元素的时候,如果删除的是第1个元素,则剩余的所有元素都要往前移动,复杂度成了O(n)。
查找一个特定的元素的时候,最差的情况下需要遍历所有元素,复杂度是O(n)。

如果采用用链表结构,则增加和删除元素都可以做到O(1),查找还是O(n)。

如果采用的是有序的数据结构

有序数据结构.png

如果使用的是数组结构:
增加元素也还是O(1)。
删除元素也还是O(n)。
查找一个特定的元素的时候,因为是有序的,所以可以采用二分法,复杂度可以达到O(logn)。

如果采用用链表结构,则增加和删除元素都可以做到O(1),查找还是O(n),因为是链表结构,无法使用二分法,无法定位中间的元素是第几个元素。

所以使用线性的数据结构无法在增删查的时候都做到O(logn)的复杂度,而使用树结构则可以做到。


树是什么?

是n(n>=0)个结点的有限集。n=0时称为空树。

在任意一棵非空树中:

  1. 有且仅有一个特定的称为根的结点;
  2. 当n>1时,其余节点可分为m(m>0)个互不相交的有限集,其中每一个几何本身又是一棵树,并且称为根的子树。

结点

  1. 结点包含一个数据元素和若干个指向子树的分支。
  2. 结点拥有的子树数量称为结点的度(Degree)
  3. 度为0的节点称为叶结点(Leaf)终端结点;度不为0的结点称为非终端结点分支结点
  4. 除根结点外,分支结点也称为内部结点

树的度是树内各结点的度的最大值。

结点的子树的根称为该结点的孩子(Child)
该结点称为该孩子双亲(Parent)
同一个双亲结点之间互称兄弟(Sibling)

结点的层次(Level)从根开始定义起,根为第一层。
双亲在同一层的结点互为堂兄弟
树中结点的最大层次称为树的深度(Depth)或高度

森林(Forest)是m(m》=0)棵互不相交的树的集合。

2 存储结构

双亲表示法:每个结点设置一个指向该结点双亲的指针域。
孩子表示法
将结点连接起来存在1个链表。
链表的每个结点,都有一个存储自己子结点的链表。

相关文章

  • 树结构基础概念

    1 定义 为什么要有树结构? 在维护一个动态的数据集合(需要增删查)的时候,二叉树(树结构的一种)可以在增删查的时...

  • (三)树结构---平衡二叉树的实现

    导语 平衡二叉树的概念之前已经介绍过,这里不做累述,可以参考树结构-基础,这里主要考虑代码实现和思路原理 平衡二叉...

  • (一)树结构---基础

    导语 本章都是对树的一些基本概念的区分,是学习树数据结构的基础,对树已经很了解可以直接跳过 为了整体逻辑框架的完整...

  • 二叉树的后序遍历(递归和非递归版本)

    难易程度:★★ 重要性:★★★★★ 树结构是面试中的考察的重点,而树的遍历又是树结构的基础。非递归的前序遍历算法思路可以

  • 二叉树的中序遍历(递归和非递归版本)

    难易程度:★★ 重要性:★★★★★ 树结构是面试中的考察的重点,而树的遍历又是树结构的基础。中序遍历的非递归版本要...

  • 二叉树的先序遍历(递归和非递归版本)

    难易程度:★★ 重要性:★★★★★ 树结构是面试中的考察的重点,而树的遍历又是树结构的基础。 扫描下方二维码,及时...

  • 树结构与Java实现

    树结构与Java实现 目录 前言 树的概念概述术语实际应用 实现树TreeNodeTreeNodeIterator...

  • 原来你是这样的数据结构之树结构

    什么是树结构 树结构是一种描述非线性层次关系的数据结构,其中主要的是树的概念,树是n个数据结点的集合,在该集合中包...

  • Zookeeper-基础知识

    基础知识 by shihang.mai zookeeper用作分布式协调服务 zk节点 zk是目录树结构 node...

  • Golang Gist

    概念讲解 基础概念 基础问答 基础问答 编码能力考查x

网友评论

      本文标题:树结构基础概念

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