【00013】

三、数据结构

3.4 树形结构

1. 概念

(1)节点:组成树形结构的元素
(2)特性:只能有一个前驱,但可以有多个后继,每个节点在树形结构中的路径都是唯一的
        根节点:没有前驱只有后继的顶层节点
        分支节点:有前驱也有后继
        叶子节点:只有前驱没有后继的节点称为叶子节点
(3)层:根节点所在层数为1,后继每过一个节点,层数+1
(4)节点高度:从叶子节点出发到达根节点的节点个数
(5)节点深度:从根节点出发到指定节点的节点个数
        树的高度 == 树的深度 == 树的层数
(6)子树:树形结构可以看做是由很多子树构成
(7)多个子树构成的属性结构称为森林

2. 二叉树

(1)概念:树形结构中所有节点最多有2个后继节点,称为二叉树
(2)节点类型:
        1. 根节点
        2. 叶子节点
        3. 分支节点
                只有左孩子
                只有右孩子
                左孩子右孩子都有
(3)完全二叉树
将二叉树编码后展开编号连续的称为完全二叉树
(4)满二叉树
二叉树所有的叶子节点都在同一层,每一层上的节点都是满的
(5)特性
二叉树第k层最 2^k-1 个节点
满二叉树前k层有 2^k -1 个节点
6. 二叉树的遍历:
        深度优先遍历(DFS):
        前序遍历:根左右
        中序遍历:左根右
        后续遍历:左右根
        广度优先遍历(BFS):
        逐层从左到右遍历

3.5 哈希表

1. 哈希:一种算法,通过哈希算法将数据映射成键值,根据键值来存取数据,以降低查找数据时的时
间复杂度
2. 哈希冲突:多个数据通过哈希算法映射成相同的键值,就会产生哈希冲突

3.6排序和查找

1. 冒泡排序:
相邻两个元素比较,大的向后走,小的向前走,逐渐将最大值放入最末尾,循环将前面元素排
序即可
时间复杂度:O(n^2)
稳定性:稳定
2. 选择排序:
假设前面的元素为最小值,将最小值与后续元素比较,最终获得当前最小值,与前面元素交换
到对应的位置
时间复杂度:O(n^2)
稳定性:不稳定
3. 插入排序:
将前面元素看成有序数列,将后续元素插入有序数列中称为新的有序数列
时间复杂度:O(n^2)
稳定性:稳定
4. 希尔排序:
将数组根据步长拆分成若干个小数组,依次对每个小数组进行插入排序,将数据变成大致有
序,最后再完成一次插入排序
时间复杂度:O(nlogn)
稳定性:不稳定
5. 快速排序:
选取第一个元素作为键值,从后面找比键值小的放前面,从前面找比键值大的放后面,最终键
值放中间,如果左侧有元素递归快速排序,如果右侧有元素递归快速排序
时间复杂度:O(nlogn)
稳定性:不稳定

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值