![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 84
小小小青菜
2016年11月1日
展开
-
数据结构(C++)——排序二叉树(二叉搜索树)
二叉搜索树也称为二叉排序树。也就是说,插入的第一个数据作为根节点,后来的结点跟其根结点比,小的插在左边,大的插在右边。下面给举个例子:由45,60 ,30 ,20 ,25 ,55 ,65 ,50, 40 ,35 。这几个树可以构成型如下面的一棵排序二叉树。1、二叉搜索树的性质:(1)每个结点都有一个作为搜索依据的关键码(key)也就是数据域,所有节点的关键码互不一样。(2)左子原创 2017-02-12 14:05:54 · 4721 阅读 · 0 评论 -
数据结构(C++)——二叉树的前,中,后线索化
从二叉树的遍历我们可以得知:遍历二叉树是以一定规则将二叉树中结点排成一个线性序列,得到二叉树中的结点的前序序列或中序序列或后序序列。其实质上市对一个非线性结构进行线性化操作,使得每个结点(除去第一个和最后一个)在这些线性序列中有接近有一个直接的前驱后继。 但是,我们之前写的二叉树结构只能找到节点的做孩子和右孩子的信息,而不能直接得到结点在任一序列中的前驱和后继信息,而这种信息原创 2017-01-31 16:39:16 · 276 阅读 · 0 评论 -
数据结构(C++)——二叉树
1.前中后序递归遍历2.前中后序非递归遍历3.层次遍历4.求节点个数,求高度#include"AllHead.h"#include#include#include"seqstack.h"templateclass BinTree;templateclass BinTreeNode{ friend class BinTree;private: BinTreeNo原创 2017-01-28 01:01:59 · 252 阅读 · 0 评论 -
分别根据前中序遍历和后中序遍历来推二叉树的结构
1、理论分析:数据结构的基础知识中重要的一点就是能否根据两种不同遍历序列的组合(有三种:先序+中序,先序+后序,中序+后序),唯一的确定一棵二叉树。然后就是根据二叉树的不同遍历序列(先序、中序、后序),重构二叉树。显然,这三种组合并不是都能唯一确定二叉树的,其中先序+后序就不能唯一确定一棵二叉树。这里我就不证明了。举个反例:反例:任何结点只有左子树的二叉树和任何结点只有右子树的二叉树,原创 2017-02-14 01:21:34 · 11565 阅读 · 1 评论 -
数据结构(C++)——队列
AllHead.h#ifndef _ALLHEAD_H#define _ALLHEAD_H#include#includeusing namespace std;#endifQueue.h#ifndef _QUEUE_H#define _QUEUE_H#include"AllHead.h"const int maxSize = 10;templateclass原创 2017-01-22 15:37:34 · 306 阅读 · 0 评论 -
数据结构(C++)——双循环链表
#include"AllHead.h"templateclass DbList;templateclass DbListNode{ template friend class DbList;private: DbListNode *pre; DbListNode *next; T data;public: DbListNode(DbListNode *pt = NULL原创 2017-01-20 22:35:53 · 341 阅读 · 0 评论 -
数据结构(C++)——单向循环链表
#include"AllHead.h"templateclass CircList;templateclass CircListNode{ friend class CircList;protected: T data; CircListNode *next;public: CircListNode(CircListNode *ptr = NULL){next = ptr原创 2017-01-20 22:30:51 · 408 阅读 · 0 评论 -
数据结构(C++)——单链表
#include"AllHead.h"templateclass List;templateclass ListNode{ template friend class List;private: T data; ListNode *next;public: ListNode(ListNode *ptr = NULL){next = ptr;} /原创 2017-01-20 22:20:19 · 258 阅读 · 0 评论 -
数据结构(C++)——顺序表(线性表)
1、总的头文件:#ifndef _ALLHEAD_H#define _ALLHEAD_H#include#includeusing namespace std;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0typedef int Status;#define maxcap 10#e原创 2017-01-17 23:47:36 · 370 阅读 · 0 评论 -
数据结构(C++)——图(邻接表)
一、改进原因:以邻接矩阵的形式存储图结构,当e远远小于n^2时,大量的元素都是0。显然,这么多的0元素肯定会造成存储空间的巨大浪费。所以我们将邻接矩阵改进为邻接表。为此,需要把邻接矩阵的各行分别组织为一个单链表。如图:代码:#include"AllHead.h"#define MAXSIZE 10class EdgeNode;templateclass Gra原创 2017-02-19 15:23:07 · 614 阅读 · 0 评论 -
数据结构(C++)—— 图(邻接矩阵)
一、重要概念理解:完全图(Complate graph)在由n个顶点组成的无向图中,若有n*(n-1) / 2条边,则称之为无向完全图。在由n个顶点组成的有向图中,若有n*(n-1) 条边,则称之为有向完全图。完全图中的边数达到最大。权(weight)在某些图中,边具有与之相关的数值,称为权重。权重可以表示从一个顶点到另一个顶点的距离,花费的代价,所需要的时间,次数等。这原创 2017-02-19 12:15:04 · 3173 阅读 · 0 评论 -
数据结构(C++) —— 最小堆(mainHeap)
一、理论知识普及:假定在各个数据记录(元素)中存在一个能够标识数据记录(元素)的数据项,并将依据该数据项对数据进行组织,这个数据项就成为关键码(KEY)。如果有一个关键码的集合,把它的所有元素按完全二叉树的顺序存储方式存放在一个一维数组中,并满足无论在哪棵树上看,父节点的值总比子节点的小,称这个集合为最小堆。二、性质:由于对存储在下标从0开始计数的数组中,因此,在堆中给定下标为i的原创 2017-02-19 11:22:08 · 1897 阅读 · 0 评论 -
红黑树——初步剖析
个人理解:红黑树就是相当于一个二叉平衡树。而它的平衡条件也就是下面五条性质:(1)每个节点要么是红的,要么是黑的。(2)根节点是黑色的(3)每个叶节点是黑色的(树尾端的NIL指针或NULL节点)(4)如果一个节点是红色的,那他 的两个子节点就是黑的(5)对于任意节点而言,其到叶节点(树尾端NULL)的每条路径上都包含相同数目的黑结点。http://www.cnblogs.c原创 2017-08-11 10:56:21 · 310 阅读 · 5 评论