数据结构
文章平均质量分 53
吴俊荣
我是一个非常非常懒的人
展开
-
数据结构——红黑树
左旋的基本思想是将一个节点的右子节点提升为新的父节点,同时原来的父节点成为新的左子节点。右旋的基本思想是将一个节点的左子节点提升为新的父节点,同时原来的父节点成为新的右子节点。5.对于树中的任意一个结点, 从该结点到所有叶结点的路径上一定包含相同数量的黑结点(我们将红黑树任意结点到叶子结点的路径上的黑色结点的个数称为该结点的 「黑高」)3.所有叶子结点是黑色(在红黑树中, 我们将底层叶结点看做有两个值为 NULL 的孩子结点, 以 NULL 结点作为红黑树的叶结点)4.每个红色结点的孩子结点一定是黑色。原创 2023-09-18 17:40:21 · 247 阅读 · 1 评论 -
数据结构——KD树
KD树(K-Dimensional Tree)是一种用于多维空间的二叉树数据结构,旨在提供高效的数据检索。KD树在空间搜索和最近邻搜索等问题中特别有用,允许在高维空间中有效地搜索数据点。3.切分维度上,左子树值小于右子树值。1.分割K维数据空间的数据结构。原创 2023-09-18 16:27:14 · 442 阅读 · 0 评论 -
数据结构——八叉树
八叉树(Octree)是一种用于表示和管理三维空间的树状数据结构。它将三维空间递归地分割成八个八分体(octant),每个八分体可以继续分割,以实现对三维空间的更精细的划分。八叉树通常用于解决空间搜索和查询问题,例如三维物体碰撞检测、体素化(Voxelization)、地理信息系统等领域。原创 2023-09-18 15:29:40 · 1226 阅读 · 0 评论 -
数据结构——四叉树
四叉树(Quadtree)是一种用于表示和管理二维空间的树状数据结构。它将二维空间递归地分割成四个象限,每个象限可以继续分割,以实现对空间的更精细的划分。四叉树通常用于解决空间搜索和查询问题,例如碰撞检测、图像压缩、地理信息系统等领域。特别适合大规模的广阔室外场景管理。一般来说如果游戏场景是基于地形的(甚至没有高度)(如城市、平原、2D场景),那么适合用四叉树来管理。而如果游戏场景在高度轴上也有大量物体需要管理(如太空、高山),那么适合用八叉树来管理。原创 2023-09-18 15:06:18 · 1913 阅读 · 0 评论 -
数据结构——二叉搜索树
但是值得注意的是,对于二叉搜索树,我们可以通过中序遍历得到一个递增的有序序列。3.根据节点的值与目标节点的值的关系,将新节点添加为其左侧或右侧的子节点。二叉搜索树是二叉树的一种特殊形式。2.每个节点中的值必须小于(或等于)其右侧子树中的任何值。1.每个节点中的值必须大于(或等于)其左侧子树中的任何值。1.根据节点值与目标节点值的关系,搜索左子树或右子树;2.如果目标值小于节点的值,则继续在左子树中搜索;3.如果目标值大于节点的值,则继续在右子树中搜索。1.如果目标值等于节点的值,则返回节点;原创 2023-09-18 13:43:31 · 145 阅读 · 0 评论 -
数据结构——二分查找法
二分查找法(Binary Search)是一种高效的查找算法,通常用于在已排序的数组或列表中查找特定的目标值。这个算法的基本思想是不断将查找范围缩小为原来的一半,直到找到目标值或确定目标值不存在。二分查找是一种在每次比较之后将查找空间一分为二的算法。每次需要查找集合中的索引或元素时,都应该考虑二分查找。如果集合是无序的,我们可以总是在应用二分查找之前先对其进行排序。二分查找一般由三个主要部分组成:1.预处理一如果集合未排序,则进行排序.原创 2023-09-14 16:58:16 · 697 阅读 · 0 评论 -
数据结构——哈希
数据结构——哈希原创 2023-09-05 22:06:17 · 598 阅读 · 0 评论 -
数据结构——拓扑排序算法
拓扑排序的广度优先算法(Topological Sort with Breadth-First Search)是一种在有向无环图(DAG)中进行排序的方法。与深度优先算法不同,广度优先算法使用队列来实现拓扑排序。拓扑排序的深度优先算法(Topological Sort with Depth-First Search)是一种在有向无环图(DAG)中进行排序的方法。该算法使用递归来进行深度优先搜索,并在搜索完成后将节点添加到排序结果中。原创 2021-02-22 16:56:56 · 2366 阅读 · 1 评论 -
数据结构——广度优先搜索
广度优先搜索(Breadth-First Search,简称BFS)是一种用于图和树等数据结构的遍历算法。它从根节点(或起始节点)开始,首先访问根节点,然后逐层遍历子节点,直到遍历完所有节点为止。BFS通常使用队列数据结构来实现。原创 2021-01-26 10:37:31 · 1717 阅读 · 1 评论 -
数据结构——深度优先遍历
最小深度是从根节点到最近叶子节点的最短路径的长度。中序遍历(Inorder Traversal):先递归地访问左子树,然后访问根节点,最后递归地访问右子树。后序遍历(Postorder Traversal):先递归地访问左子树,然后递归地访问右子树,最后访问根节点。最大深度是从根节点到最远叶子节点的最长路径的长度。二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。输入:root = [3,9,20,null,null,15,7]最小深度是从根节点到最近叶子节点的最短路径上的节点数量。原创 2021-01-26 09:20:34 · 2385 阅读 · 1 评论 -
数据结构——赫夫曼树
数据结构——赫夫曼树赫夫曼树定义与原理我们先把这两棵二叉树简化成叶子结点带权的二叉树,如图6-12-4所示。其中A表示不及格、B表示及格、C表示中等、D表示良好、E表示优秀。每个叶子的分支线上的数字就是刚才我们提到的五级分制的成绩所占比例数。赫夫曼大叔说,从树中一个结点到另一个结点之间的分支构成两个结点之间的路径,路径上的分支数目称做路径长度。图6-12-4的二叉树a中,根结点到结点D的路径长度就为4,二叉树b 中根结点到结点D的路径长度为2。树的路径长度就是从树根到每一结点的路径长度之和。二叉树a原创 2021-01-21 11:50:08 · 187 阅读 · 0 评论