可以将数据结构定义为用于访问,组织和修改数据的专用格式。 有许多不同的数据结构,但是在编程中最常遇到的数据结构可以分为两个阵营。
线性:元素组成序列的数据结构
- 数组
- 堆栈
- Queue列
- 链表
- 哈希表
非线性:以分层关系存储的数据结构。
- 树木
- 图表
我们将更具体地看树木。 什么是树木的真实例子?


文件系统


文档对象模型(DOM)


摩尔斯电码


我们可以将树用于:
- 处理分层数据
- 处理排序列表
- 使信息更易于搜索(横向树)
- 路由算法
- 还有更多!
- 根是树的第一个节点
- 边缘是两个节点之间的链接
- 父节点是具有子节点优势的节点
- 子节点是具有父节点的节点
- 叶是没有孩子的节点
- 高度是到叶子的最长路径的长度
- 深度是到其根的路径的长度
- 子树是节点的后代
- 穿越以特定顺序通过节点
- 级别是节点的世代
- 键是基于搜索操作的节点的值
关于树的其他内容:
- 一棵树是分层设置的,数据的排列顺序从更一般到更具体。
- 树由包含数据或值并通过边连接的节点组成。
- 节点可以具有子节点,但是如果它们没有任何子节点,则称为叶子。
- 每个叶节点将是唯一的。
- 子节点彼此独立。
- 树的第一个节点是根。
- 如果根连接到另一个节点,则该根也称为父节点,并且该连接是子节点。
- 一棵树上可以有多个父节点,但只有一个根。
- 如果树具有n个节点,则它将始终具有(n-1)个边。
二叉树
二叉树是一种树数据结构,其中每个节点最多具有两个子节点,称为左子节点和右子节点。 二叉树在平衡时对于搜索非常有用。 数据结构中的任何节点都可以通过从根节点开始并反复遵循对左或右子节点的引用来访问。 在二叉树中,每个节点的度数最多为两个。
根据二叉树中节点的排列方式,它可以是完整 , 完整和完美的 :


- 完整的二叉树 :每个节点正好有0或2个子节点(但永远不会有1个),所有叶节点都处于同一级别。
- 完整的二叉树 :当除最后一层以外的所有层均充满节点时。
- 完美的二叉树 :当所有级别(包括最后一个级别)都充满节点时。
二进制搜索树
二进制搜索树或简称BST是二进制树的一种特殊应用。 BST最多有两个节点(像所有二叉树一样)。 但是,这些值的方式是,左子级的值必须小于父级,而右子级的值必须更高。


横向
遍历描述了访问树中所有节点的过程。 由于树是非线性数据结构,因此没有唯一的遍历。 遍历二叉树的方式有多种,具体取决于访问节点的顺序:有序,前序和后序。


有序遍历
依次遍历访问节点的顺序为:左,父,右。
订单遍历
此顺序的后遍历访问节点:左,右,父。
预订遍历和DFS(深度优先搜索)
按此顺序的有序遍历访问节点:父,左,右


在编程中可以使用许多不同的基本数据结构。 一些数据结构是线性的,对于以顺序方式访问数据很有用。 线性结构的缺点是需要花费大量时间来搜索数据集。 树是一种数据结构,其中一个节点有零个或多个子节点。 有两个或更少子代的树称为二叉树。 如果对二叉树进行排序,其中左值小于父树,右子级更高,则将其视为二叉搜索树。 根据访问节点的顺序,还有多种方法可以使二叉树横穿。