数据结构 树结构-二分搜索树(1)

简介: 数据结构 树结构-二分搜索树

一、树结构

树是一种很特别的数据结构,树这种数据结构叫做 “树” 就是因为它 长得像一棵树 。但是这棵树画成的图长得却是一棵倒着的树,根在上,叶在下。

树是图的一种,树和图的区别就在于:树是没有环的,而图是可以有环的。

树状图是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。

image.png

二、为什么要有树结构


2.1 树结构是一种天然的组织结构


比如说电脑中的文件夹,我们需要找到一个特定的文件,需要到某个文件夹下去找这个文件,计算机的文件存储的结构来源于生活。

再比如说图书馆,我们知道图书馆里面有历史类、数理类、计算机类,我们想要找到关于java的书籍,就需要到计算机类的Java中去找到我们需要的图书

image.png

比如公司里面的层级结构:CEO、HR CTO等等,还有我们比较常见的家谱等等,都是类似于树结构

image.png



将数据使用树结构后,会更加的高效

三、二分搜索树


3.1 特点


二分搜索树是一个动态数据结构

二分搜索树也是一颗二叉树(也叫多叉树)

二分搜索树的每个节点的值都大于其左子树的所有节点的值,同时每个节点的值都小于其右子树的所有节点的值

存储的元素必须有可比较性, Java中的话就要求二分搜索树保存的数据类型要实现Comparable接口, 或者使用额外的比较器实现

每一颗子树也是二分搜索树

二分搜索树具有唯一根节点,同时在二叉树中最底下是它的叶子节点

image.png

二分搜索树具有唯根节点,每个节点最多有两个孩子(左边的叫左孩子,右边的叫右孩子),同时每个节点最多有一个父亲

二分搜索树天然的具有递归特性


每个节点的左子树也是二叉树

每个节点的右子树也是二叉树

image.png

二叉树不一定是满的,一个接电脑也是二叉树、空也是二叉树

image.png



目录
相关文章
|
6天前
|
数据可视化 前端开发 JavaScript
可视化数据结构——让你的树跃然纸上
可视化数据结构——让你的树跃然纸上
|
4天前
|
前端开发 JavaScript 算法
JavaScript 中实现常见数据结构:栈、队列与树
JavaScript 中实现常见数据结构:栈、队列与树
|
6天前
|
机器学习/深度学习
数据结构-----树的易错点
数据结构-----树的易错点
19 4
|
6天前
|
存储 算法
实验 2:树形数据结构的实现与应用
实验 2:树形数据结构的实现与应用
8 0
|
6天前
|
存储 算法 C++
数据结构/C++:AVL树
数据结构/C++:AVL树
10 2
|
6天前
|
JSON 数据可视化 Shell
数据结构可视化 Graphviz在Python中的使用 [树的可视化]
数据结构可视化 Graphviz在Python中的使用 [树的可视化]
12 0
|
6天前
|
机器学习/深度学习 存储 算法
数据结构与算法 动态规划(启发式搜索、遗传算法、强化学习待完善)
数据结构与算法 动态规划(启发式搜索、遗传算法、强化学习待完善)
14 1
|
6天前
|
算法 搜索推荐 索引
数据结构与算法 搜索(下)
数据结构与算法 搜索(下)
11 0
|
6天前
|
缓存 算法 搜索推荐
数据结构与算法 搜索(上)
数据结构与算法 搜索(上)
9 1
|
6天前
|
数据采集 存储 算法
数据结构与算法 搜索
数据结构与算法 搜索
7 1