树 | 突然间,看了这篇文章,树我懂了!

开发 前端
二叉树指每个节点最多只能有两个子树的有序树。通常左边子树称之为左子树,右边树称之为右子树。二叉树最多只能有两颗对称的树,二叉树有左,右之分。

 [[353954]]

本文转载自微信公众号「小明菜市场」,作者小明菜市场 。转载本文请联系小明菜市场公众号。

Hello ! 我是小小,今天总结一下什么是树,以及关于树的一些内容。。

树是一种非常常用的数据结构,与线性表,堆栈并驾齐驱。

树的定义

树是从自然界抽象出来的,它指的是N个父子节点的有限集合,对于这个有限集合,需要满足如下条件:

  1. 当N=0时,该节点集合为空,这棵树也为空
  2. 在任意非空树中,只能有一个根节点
  3. 当N>1时,除去跟节点意外的其余节点本身也要集合成为一颗树。即,树具有递归特性,一棵树是由若干子树组成,每颗树又是由若干颗更小的子树组成,如图所示

二叉树

二叉树指每个节点最多只能有两个子树的有序树。通常左边子树称之为左子树,右边树称之为右子树。二叉树最多只能有两颗对称的树,二叉树有左,右之分。树和二叉树的区别

1. 树的节点的度数没有限制,二叉树限制为2,树没有限制。

2. 无序树的节点没有左右之分,二叉树的节点有左右之分。

二叉搜索树

二叉搜索树,它是一颗空树,具有以下性质的二叉树,称之为二叉搜索树

  1. 它的左子树不为空,并且左子树的所有节点值都要小于跟节点的值。
  2. 它的右子树不为空,则右子树的所有节点的值都要大于跟节点的值。
  3. 它的左右子树分别为二叉排序树。

 

平衡二叉树

平衡二叉树具有以下性质 他是一颗控诉或者他的左右两个子树的高度差绝对值不超过1,并且左右两个子树都是一颗平衡二叉树。平衡二叉树实现有红黑树,AVL,伸展树,最小二叉平衡树的节点公示为:F(n)=F(n-1)+F(n-2)+1

B-树

一颗m阶B树,是一颗平衡的m路搜索树,或者是空树,满足以下性质

  1. 1根节点至少有两个子女
  2. 每个非跟节点包含k-1个元素和k个孩子,其中m/2 <= k <= m
  3. 所有的叶子结点都位于同一层。
  4. 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素值域的划分一般用于文件系统或者数据库的索引

一般用于文件系统或者数据库的索引

B+树

B+树具有以下特点

  1. 有k个子树的中间节点包含k个元素,每个元素不保存数据,只用来保存索引,所有数据保存在叶子节点。
  2. 所有的叶子节点中包含了全部的元素信息,以及指向这些元素信息的执政,并且叶子节点本身也是按照由大到小依次排列。
  3. 所有的中间节点元素都保存在叶子节点,在子元素中总是最大或者最小的元素。

红黑树

红黑树是平衡二叉树的实现,具有以下特征

  1. 节点是红色或者是黑色。
  2. 根节点时黑色。
  3. 每个叶子节点都是黑色节点的空节点
  4. 每个红色节点的两个子节点都是黑色,从每个叶子节点到根的所有路径上不能有两个连续的红色节点
  5. 从任意节点到每个叶子节点所有的路径都包含相同数目的黑色节点。

 

责任编辑:武晓燕 来源: 小明菜市场
相关推荐

2019-05-30 09:32:49

2020-02-14 12:07:33

数据结构二叉查找树查询

2019-09-19 14:03:32

B树节点数据结构

2019-08-01 11:04:10

Linux磁盘I

2021-09-29 07:24:17

Linux程序系统

2023-08-04 09:43:16

Socket编程Python

2021-05-19 08:31:15

压测数据结构与算法工具

2018-12-05 12:18:07

编程少儿教育

2020-10-31 16:40:13

5G运营商通信

2022-02-22 11:17:31

Kafka架构代码

2019-09-11 14:40:44

数据清洗数据分析数据类型

2019-10-31 09:48:53

MySQL数据库事务

2022-04-14 10:10:59

Nginx开源Linux

2019-11-04 15:00:50

MySQL索引B+树

2019-11-05 14:06:07

MySQLB+索引

2019-09-23 11:35:23

数据结构设计红黑树

2021-03-19 07:59:33

红黑树面试数据

2017-03-30 22:41:55

虚拟化操作系统软件

2021-07-13 12:21:34

PythonRPC通信

2017-12-12 12:53:09

点赞
收藏

51CTO技术栈公众号