数据结构
暮雨橙海
一只菜鸟的学习历程.
展开
-
数组,矩阵和广义表学习笔记(二)
稀疏矩阵稀疏矩阵是指矩阵中大多数元素为0的矩阵。从直观上讲,当非零元素个数低于总元素30%时,这样的矩阵称为稀疏矩阵。稀疏矩阵的三元组表表示法稀疏矩阵的三元组表表示存储对于稀疏矩阵的亚索存储,采取值存储非零元素的方法,由于非零元素的分布没有规律,因此必须同时存储非零元素的下标,即所处的行号和列号,这就是稀疏矩阵的三元表示法。(以下标从1开始计数) 可以表示为 ...原创 2018-03-06 19:54:51 · 448 阅读 · 0 评论 -
二叉树学习笔记(五)
对于两棵彼此独立的二叉树A和B,请编写一个高效算法,检查A中是否存在一棵子树与B树的拓扑结构完全相同。 给定两棵二叉树的头结点A和B,请返回一个bool值,代表A中是否存在一棵同构于B的子树。struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; Tre...原创 2018-07-17 19:16:55 · 188 阅读 · 0 评论 -
二叉树学习笔记(四)
要求使用广度优先遍历时,按行打印二叉树。 在我的理解中,按行打印的关键就是找出换行的条件,也就是找到每一行最后一个节点。 那么从根节点开始,当根节点出队列之后,根节点的子节点就要入队列,而且入队列的是第二层最靠右的子节点。那么依次类推,当第二层最后一个节点出队列时,入队列的也肯定是第三层最靠右的结点,即使第二层最后一个节点没有子节点,最新入队列的节点依然是第三层最靠右的节点。我们可以根据这个特...原创 2018-07-10 16:32:10 · 180 阅读 · 0 评论 -
排序算法学习(插入排序)
排序算法分为内部排序和外部排序: 外部排序:当文件较大,以至于内存不足以存放全部记录,需要借助外存的访问。 内部排序:适合 小文件。一般分为插入排序,选择排序,交换排序,归并排序,基数排序等。 稳定与不稳定: 对于在原始文件中,如果第i个数据等于第j个数据,且i>j,当排序之后如果i>j,那么称算法为稳定的,否则就是不稳定的。插入排序插入排序就是将待排序的算法分为两个...原创 2018-07-10 16:40:00 · 2087 阅读 · 2 评论 -
二叉树学习笔记(三)
二叉树广度优先遍历 二叉树的广度优先遍历是指对一个二叉树从根结点开始,从顶层到底层,从左向右依次遍历二叉树。 在进行广度优先遍历时,先被访问的结点的左结点和右结点也先被访问,因此需要使用队列来进行访问。#include <iostream>#include <stack>#include <queue>using namespace std;...原创 2018-04-09 22:10:29 · 197 阅读 · 0 评论 -
排序算法(交换排序)
冒泡排序将关键字按照纵向排列,自下至上的对每两个相邻的关键字进行比较,若ai&amp;amp;amp;gt;aj(i=j-1),则将两个记录交换位置. 当排序过程中,序列已将有序便不再需要排序,因此设置一个关键字flag,当已排好序,令其为true。 时间复杂度为o(n^2) 具体算法如下void bubble_sort(int *v, int n){ int i, j, temp; ...原创 2018-07-10 16:51:19 · 292 阅读 · 0 评论 -
数组,矩阵和广义表学习笔记(一)
从逻辑结构上讲,数组结构可以看做对一般的线性表的补充。一维数组即为线性表,二维数组可以看作是元素为一维数组的(线性表的)线性表,以此类推n维数组为元素为n-1维数组的线性表。行主映射和列主映射数组的应用需要我们将数组元素序列化,即按一维数组排列 。令n是一个k维数组的元素个数。行为主序的优先存储是将数组元素按行优先关系进行排列,,第i+1行元素紧跟在第i行元素的后面,同一行元素按照列...原创 2018-03-04 18:12:17 · 1127 阅读 · 0 评论 -
队列学习笔记
队列和栈都是一种运算受限的线性表。只允许在表的一端进行插入,而在另一端进行删除。允许删除的叫做队首(front),允许插入的叫做队尾(rear)。即先进先出原则,如同排队取票。1. 非循环顺序队列队列的顺序存储结构称为顺序队列。和顺序表一样,顺序队列,顺序队列也需要用一个数组存放当前队列中的元素。由于队头和队尾都是变化的,所以需要设置两个指针,分别指示当前队头元素和队尾元素在数组中的位置。...原创 2018-03-03 16:36:14 · 732 阅读 · 0 评论 -
二叉树学习笔记(一)
二叉树的定义与基本操作定义 把满足以下两个条件的树结构称为二叉树 1):每个节点的度都不大于2。 2):每个节点的孩子结点次序不能颠倒。二叉树的性质在二叉树的第i层上至多有2^(i-1)个节点。深度为k的二叉树,其节点总数的最大值是将每层上的结点的最大值相加,所以深度为k的二叉树的结点总数至多为 对任意一课二叉树T,若是终端结点数为n0,而其读书为2的结点数为n2,则n0...原创 2018-03-09 16:35:48 · 315 阅读 · 0 评论 -
树学习笔记(基本概念)
栈,队列,数组,以及线性表都是线性结构,线性结构结点间具有唯一前驱和唯一后继关系,而非线性结构中结点间前驱后继关系并不具有唯一性。在树结构中,结点之间的关系是前驱唯一,后继可不唯一。而在图中结点之间前驱和后继都可不是唯一。基本概念树是n(n>=0)个结点的有限集合T。当n=0的时候称为空树,当n>0时,该集合满足如下条件: 1:其中必有一个根结点,他没有直接前驱,但有0个...原创 2018-03-09 15:12:50 · 462 阅读 · 0 评论 -
二叉树学习笔记(二)
二叉树的深度优先遍历二叉树的深度优先遍历分为三种,先序遍历,中序遍历和后序遍历 1.先序遍历的操作过程: 若二叉树为空,那么为空操作,否则依次执行如下三个操作访问根节点(data) 先序遍历左子树先序遍历右子树2.中序遍历的操作过程: 若二叉树为空,那么为空操作,否则依次执行如下三个操作中序遍历左子树访问根节点(data) 中序遍历右子树3.先序遍历的操作过...原创 2018-03-15 11:59:35 · 202 阅读 · 0 评论 -
二叉树学习笔记(六)
操作给定的二叉树,将其变换为源二叉树的镜像。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/clas...原创 2018-07-17 19:29:30 · 202 阅读 · 0 评论