本文包含二叉树数据结构的完整实现以及简单演示,二叉树具有属性查看、连接、删除、遍历等多个接口,还增加直观显示接口。
常用数据结构C++实现(3):二叉树和二叉搜索树
本文包含二叉树数据结构的完整实现以及简单演示,二叉树具有属性查看、连接、删除、遍历等多个接口,还增加直观显示接口。
栈和队列都可以看做插入和删除受限制的线性表,通过继承线性表可以实现栈和队列。 Github: https://github.com/yalewoo/cpp-data-structure 栈(Stack) 从Vector派生而来,新增的接口
向量和列表都是逻辑上线性数据结构,在物理上向量是顺序存储,列表是链式存储。 向量(Vector)接口描述 概述 内部使用数组封装,支持随机访问 空间复杂度 插入时,若容量不足会翻倍 删除时,目前不会缩小占用内存 构造函数和析构函数 Vect
选取序列的第i小元素又称为选择问题,第i小的元素又称为第i个顺序统计量。简单的,排序之后我们可以立即找到第i小的元素,这种方法的时间复杂度是排序的时间复杂度,下界是O(nlogn)。但是选取第i小元素显然和排序相比要更简单,所以我们有理由相
基于比较的排序的时间复杂度下界是O(nlogn),但是当要排序的元素具有一些特殊性质的时候,可以使用非比较的方法突破这种限制。 计数排序 当待排序的元素a[]都是位于区间[0,k]中的整数时,可以使用计数排序。计数排序顾名思义就是统计元素的
在排序的结果中,各个元素的次序依赖于他们之间的比较,这种排序算法叫做比较排序。基于比较的排序有O(n^2)的冒泡排序、插入排序等,也有O(nlogn)复杂度的归并排序、堆排序等。实际上,O(nlogn)在渐进意义上是最优的。 假设我们有n个
数据结构中的堆和程序语言中的堆的意义并不相同,这里的堆是一种数据结构。二叉堆可以分为最大堆和最小堆,这里介绍最大堆。在最大堆中,结点的值满足堆的性质:除了根节点外,所有结点都不会比它的父节点大。 可以看到,逻辑上的堆是二叉树,但堆的物理结构
二次型起源于几何学中二次曲线方程和二次曲面方程化为标准形问题的研究,它是线性代数的重要内容之一,在一些其他数学分支以及其他学科中也有重要地位。 二次型 二次型的定义 定义:含有n个变量 \(x_1, x_2, …, x_n\)
特征值和特征向量是线性代数的主要内容之一,它们在物理学和统计学中都有很大的用处。另外还有一个小小的用处,求矩阵的m次幂。特征值和特征向量都是针对方阵来说的。 矩阵的相似 定义:设A与B都是n阶方阵,若存在一个可逆矩阵P,使得 $$B = P
齐次线性方程组 三种形式:方程组、矩阵、向量 下面是m个方程,n个未知数的方程组,右边全部是0. $$\left\{ \begin{array}{c} a_{11}x_1 + a_{12}x_2 + … + a_{1n}x_n