45、数据结构与稀疏矩阵操作基础

数据结构与稀疏矩阵操作基础

1. 二叉搜索树

不同的二叉搜索树(Binary Search Tree, BST)可以关联同一组元素。例如,图中展示的两个 BST 与另一个 BST 具有相同的元素集,但形态有所不同。其中一个看起来更“伸展”,另一个则更“紧凑”,这是因为它们的高度不同。

节点的高度定义为该节点到树的根节点的唯一路径的长度。而二叉搜索树的高度是其所有节点高度的最大值。搜索元素所需的时间与树的高度相关, bfs_search() 函数的时间复杂度为 $O(h)$,其中 $h$ 是二叉搜索树的高度。

如果二叉搜索树的高度为 $O(log N)$($N$ 是 BST 中的元素数量),则称该树是平衡的。在平衡的二叉搜索树中,访问、插入、删除和搜索操作的平均时间复杂度为 $O(log N)$。平衡的二叉搜索树适合存储需要频繁访问和更新的数据,并且在许多图算法中都有应用。

2. 二叉堆

在很多应用中,需要找出集合中的最大或最小元素。例如,在 Dijkstra 算法中,计算加权图中的最短路径时,每一步都需要从未访问的节点中选择距离源节点最近的节点。

如果将未访问节点列表存储在数组中,每次查找最小距离元素都需要扫描整个数组,时间复杂度为 $O(N)$。若将数组按距离升序排序,虽然可以直接获取最小距离元素,但每次更新节点距离后都需要重新排序,时间复杂度为 $O(N log N)$,比未排序数组的线性搜索更差。

此时,可以使用二叉堆(Binary Heap)。二叉堆是一种数据结构,它保证以 $O(1)$ 的时间复杂度访问和提取集合中的最小(或最大)元素,并需要 $O(log

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值