![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++数据结构合集
彪莫婆婆
一个在校大学生,专业游戏开发技术方向,为人性格开朗,喜欢搞怪
展开
-
数据结构之模板平衡二叉树
想必大家一定会问有了二叉搜索树为啥还要平衡二叉树呢,大家是否想过这样的一个问题,假如我们向一颗二叉树中插入这些1,2,3,4,5,6,7数据这颗二叉树会变成什么呢?答案很明确这颗二叉树虽然有着二叉树但是他视乎变成了一个链表,查找起来依然没有剩下时间,反而让开销更大,为了防止这种情况的产生,使其这颗二叉树依然高效,于是就有了平衡二叉树什么是平衡二叉树:基于二叉排序树左右子树的深度之差的绝对值不超过1左右子树都是平衡二叉树那么在建立树的过程中,我们如何知道左右子树的高度差呢?在这里我们采用了平衡因子进原创 2021-04-06 20:39:16 · 120 阅读 · 0 评论 -
数据结构之最大堆的实现
堆是重要的数据结构在程序设计中占据着重要的位置,很多设计中都有堆的影子。首先那么什么叫做堆呢?堆的定义:堆(heap)本质上就是一棵完全二叉树,只不过这棵完全二叉树有点特别,能够被称为堆的二叉树,除了它必须要是一棵完全二叉树外,它的每一个结点都必须大于或者小于其子节点。解释一下就是对于树中的所有的结点都至少有一棵子树,对于这个结点的子树上所有的结点都必须要大于或者小于其父节点。因此,堆也是个递归的定义,通常,我们将结点都大于或者等于子树所有结点的堆称为最大堆;将结点都小于或者等于子树所有原创 2021-04-03 20:46:09 · 250 阅读 · 0 评论 -
C++模板二叉排序树
什么是二叉查找树:根节点的值大于其左子树中任意一个节点的值,小于其右节点中任意一节点的值,这一规则适用于二叉查找树中的每一个节点。以下是实现过程,不知是否有bug,刚写完就给上传到了知乎。以下是代码,看了很多人的总是感觉不是我想要的感觉于是自己写一个。如有错误请指正#pragma once#include"预编译.h"using namespace std;template<typename T>struct TreeNode { T val; TreeNode* le原创 2021-04-02 20:43:30 · 115 阅读 · 0 评论 -
C++实现最大堆
C++实现最大堆前言:堆是一种数据结构,有着广泛的应用。例如:优先队列堆排序**误解:**很多人都误解堆是一颗二叉树,但是我们只是说堆形如一颗二叉树(平衡二叉树),但堆并没有左右子节点,而是一个数组最大堆的定义:任一结点的关键码均大于等于它的左右孩子的关键码,其中堆顶的元素最大。(任一路径中的元素升序排列)计算公式:当我们已知父节点时:计算孩子节点的位置左孩子节点 = 2父节点+1右孩子节点 = 2父节点+2**已知孩子节点:**计算父节位置时父节点 = (孩子节点-1原创 2021-03-14 08:51:20 · 807 阅读 · 0 评论