数据结构
blog_zhangxu
美好的年华,别让自己失望
展开
-
你真的了解冒泡排序吗?
冒泡排序顾名思义,冒泡排序就像吐泡泡一样,泡泡会越来越大,对应我我们的排序算法中,就是将我们的最大数沉淀。说到泡泡。。。 不由得让我想起了网红语~~~ 香啊、造啊、香皂啊,吃完吐泡泡。 哈哈!基本原理冒泡排序是一种交换排序的简单排序算法,它是将相邻的两个元素比较,将比较大的元素向后移动,较小的元素向前,类似于我们的冒泡泡,所以冒泡排序就诞生了,它的思想比较简单,易理解,很适合于初学者学...原创 2019-04-20 22:01:11 · 201 阅读 · 0 评论 -
根据二叉树的前序中序构建二叉树
构建二叉树构建二叉树,这是个比较繁琐的问题,假如我们知道二叉树的先序及中序遍历我们能不能构建二叉树呢?答案肯定是能得,这不废话么,不能得话我就得换我的标题了。为什么能根据先序以及中序构建一棵二叉树呢?答案显而易见,开始我也不知道,哈哈,但是我根据先序以及中序遍历将二叉树画出来了,那就说明当然可以,后来我又仔细观察了二叉树的先序以及中序序列,我们会发现先序序列中根很容易找到,因为第一个元素就...原创 2019-04-20 15:59:45 · 7910 阅读 · 4 评论 -
二叉树的层序遍历
二叉树层序遍历说完了二叉树的先序、中序以及后序遍历方法,那么我们再来谈一谈二叉树如何层序遍历请看大屏幕 。。。。上图是一棵二叉树,层序遍历结果:1 2 3 4 5 6咦,我想你可能会疑惑什么叫做层序遍历,其实很简单,就是按照一层一层的去遍历二叉树,这就很容易理解了。首先让我们来看看如何去层序遍历二叉树#include <queue>vo...原创 2019-04-20 15:31:18 · 11812 阅读 · 1 评论 -
二叉树的后序遍历(递归与非递归)
二叉树后序遍历介绍了二叉树的先序以及中序遍历,那么我简单的再给大家介绍了一下二叉树的后序遍历。请看大屏幕 。。。。上图是一棵二叉树,后序遍历结果:4 5 2 6 3 1同理,我想你可能会问什么叫做后序遍历,其实很简单,就是按照 左 -》 右 -》 根 的方式去遍历二叉树。首先让我们来看看如何递归的去后序遍历二叉树注:在这里我特别...原创 2019-04-20 15:06:39 · 4012 阅读 · 0 评论 -
二叉树的中序遍历(递归与非递归)
二叉树中序遍历上篇我简单的给大家介绍了一下二叉树的先序遍历,那么这次我就给大家介绍一下二叉树的中序遍历请看大屏幕 。。。。上图是一棵二叉树,中序遍历结果:4 2 5 1 3 6同理,我想你可能会问什么叫做中序遍历,其实很简单,就是按照 左 -》 右 -》 根 的方式去遍历二叉树。首先让我们来看看如何递归的去中序遍历二叉树注:在这里我特别强调一点...原创 2019-04-20 14:55:59 · 2658 阅读 · 0 评论 -
二叉树前序遍历(递归以及非递归)
二叉树前序遍历对于一种数据结构而言,我们最常见的就是遍历,那么关于二叉树我们该如何去遍历呢?请看大屏幕 。。。。上图是一棵二叉树,前序遍历结果:1 2 4 5 3 6咦,我想你可能会异或什么叫做前序遍历,其实很简单,就是按照 根 -》 左 -》 右 的方式去遍历二叉树。首先让我们来看看如何递归的去前序遍历二叉树注:在这里我特别强调一点,在我们二...原创 2019-04-20 14:46:44 · 3725 阅读 · 0 评论 -
哇! 二叉树
二叉树提到二叉树,那我们就不得不说一下什么是二叉树了,正如标题所说,两个叉的树。。。。概念一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根节点加上两棵别称为左子树和右子树的二叉树组成。二叉树的特点:每个结点最多有两棵子树,即二叉树不存在度大于2的结点。二叉树的子树有左右之分,其子树的次序不能颠倒。现实生活中的二叉树对的没错,这就是我们现实生活中的二叉树。。。...原创 2019-04-20 14:15:14 · 225 阅读 · 0 评论 -
堆排序
堆排序基本思想:严格来讲,堆有不同的种类,我们主要用的还是二叉堆,而二叉堆有最大堆和最小堆之分。最大(最小)堆是一棵每一个节点的键值都不小于(大于)其孩子(如果存在)的键值的树。大顶堆是一棵完全二叉树,同时也是一棵最大树。小顶堆是一棵完全完全二叉树,同时也是一棵最小树。大堆小堆堆的相关操作以最小顶堆为例:① 向下调整:从根开始,选取当前结点 p 的较小的儿子结点;如果其值比 p...原创 2019-04-23 20:07:12 · 158 阅读 · 0 评论 -
归并排序
归并排序基本思想:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。很明显我们可以意识到它有两个重要步骤1、向下分治2、向上合并让我们来看看具体的归并排序示...原创 2019-04-23 19:30:17 · 114 阅读 · 0 评论 -
无敌快排
快速排序既然人家名称就叫快速排序,那么自然排序速度快,但是快也是相对而言的,不过大家知道就行了,这是哲学问题,万事万物都是相对的,原谅我也不咋的懂哲学,换一种不同的场景,也许它并没有其它常见排序算法快。~~接下来让我们看看快速排序到底是什么样的-基本思想这就是快排的基本思路,那么到底如何让比基准值小的在左边,比基准值大的在右边呢?这里我给大家介绍两种种方法。快排一 : 利用Hov...原创 2019-04-23 19:05:14 · 192 阅读 · 0 评论 -
带有随机指针链表的复制
链表复制上次介绍了关于链表的相交与求环问题,这次我来给大家介绍一个让我脑瓜子嗡嗡的复杂链表的复制问题。。 说实话,链表也太狂野了,太会玩了,都快赶上苏大强了。。。。。。我的个天,画了半天,别介意,本人画画水平不是特别高,大家凑合看。如上图所示,每个节点包含一个额外增加的随机指针,该指针可以指向链表中的任何节点或空节点。现在要求返回这个链表的深拷贝。这该怎么办呢,一开始我也一头雾水,这是个...原创 2019-04-18 21:56:43 · 1515 阅读 · 0 评论 -
扑克牌式插入排序及升级版希尔排序
插入排序问题提出:为什么叫做扑克牌式插入排序这里我就得给大家解释一下,为什么我要叫做扑克牌式插入排序,很简单,小编本人喜欢打扑克牌。。。相信扑克牌大家应该都不会陌生,打扑克牌其实不仅仅是娱乐,同时也能帮我们锻炼自己的思维能力。因为对于一个扑克牌高手而言,一切尽在掌握中,对方有什么牌,我怎么样能取胜,经过概率推算,就很容易打败对手,有机会有时间大家可以和朋友们切磋一下。。 尴尬 扯的有点远...原创 2019-04-23 17:19:10 · 340 阅读 · 0 评论 -
专治拖延症--选择排序
选择排序来来来,看看,是不是被我高端大气上档次的标题忽悠进来了,既然来了,那么就花几分钟看看,可能你并不太关注的选择排序。可能生活中大多数人都有选择困难症,一直拖拖拖,最后还是不知道选择那个。那么今天我就给大家分享一下数据结构中的选择排序,让你如何正确高效的对我们的数据做出正确的选择。基本思想:选择排序它就是每次从我们的序列中选择出一个最小或者最大的数放置我们的序列起始位置,直到数据全部有...原创 2019-04-23 16:32:43 · 149 阅读 · 0 评论 -
链表相交与链表求环
链表相交与求环初看链表相交与链表求环,我还懵的,什么是链表相交?链表还能相交,什么是链表求环,链表还能求环,哈哈,直到看到这个。。。。。链表中有环看到这个图我才发现链表还可以这么玩,涨知识了。。不过同时看到这道题之后,也是勾起了浓厚的兴趣,那么我们到底该如何判断链表相交与链表求环呢- 首先我们来说一下链表相交的问题开始看到这个问题的时候我也挺懵的,不知道如何去解决这个问题,不过只要你...原创 2019-04-18 13:59:40 · 226 阅读 · 0 评论 -
链表的回文结构
回文链表在我们的生活中经常会碰到这种回文的结构,回文就是反转以后和以前一样的就是回文结构,例如 1->2->3->2->1,我们将它反转之后还是与原链表一样,我们就称这种链表结构为回文结构,那么如何来判断一个链表它是不是回文链表呢?解决方案1、采用头插法将链表逆置,将整个链表反转过来,判断是否与原链表一样即可2、升级版:既然它要是回文结构,我们只需要将链表...原创 2019-04-18 13:12:21 · 8708 阅读 · 1 评论 -
删除链表中重复的节点
删除节点链表中的增删是最常见的问题,那么我们如何在一个完整的链表中删除重复的节点呢?例如:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。遇到链表的问题别慌,相信自己只要你能想得通就能写的出来,而最好的办法莫过于画图...原创 2019-04-18 12:45:18 · 302 阅读 · 0 评论 -
小小的链表其实并不简单
链表概念:链表也是我们最常使用的一种数据结构,它是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。分类单向链表、双向链表带头的链表、不带头链表循环链表、非循环链表等让我们来看看链表到底是什么样子的上图就是我们最常用的单向链表及双选购链表的示意图。很明显链表这种数据结构它是通过一种手段将我们的数据串起来,所以在数据在存储的时候它...原创 2019-04-16 22:49:23 · 113 阅读 · 0 评论 -
顺序表的相关操作
线性表概念:线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串…线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储。顺序表概念:顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,...原创 2019-04-16 22:24:25 · 130 阅读 · 0 评论 -
二叉搜索树
二叉搜索树基本概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不空,则左子树上所有节点的值均小于它的根节点的值;若它的右子树不空,则右子树上所有节点的值均大于它的根节点的值;它的左右子树也分别为二叉排序树。如下图所示二叉搜索树的查找若根节点 = 要查找的节点 返回true若根节点 < 要查找的节点 ,在右子树种查找若根节...原创 2019-07-26 14:10:57 · 323 阅读 · 0 评论