数据结构
文章平均质量分 58
Witness2020
一团漫步的灵魂
展开
-
二叉树的中序后序排列求先序/先序中序排列求后序
7-8 根据后序和中序遍历输出先序遍历 (25 分)本题要求根据给定的一棵二叉树的后序遍历和中序遍历结果,输出该树的先序遍历结果。输入格式:第一行给出正整数N(≤30),是树中结点的个数。随后两行,每行给出N个整数,分别对应后序遍历和中序遍历结果,数字间以空格分隔。题目保证输入正确对应一棵二叉树。输出格式:在一行中输出Preorder:以及该树的先序遍历结果。数字间有1个空格,...原创 2018-07-16 19:57:23 · 4087 阅读 · 0 评论 -
哈夫曼树
1.路径长度:一串节点序列k1,k2......kn,从k1到kn经过的分支数即为这两点之间的路径长度,路径长度等于路径上节点个数减1。2.带权路径长度:有时树的节点具有权值,这时节点的带权路径长度规定为从树根节点到该节点之间的路径长度与该点权的乘积。3.树的带权路径长度(WPL):定义为树中所有叶子节点的带权路径长度之和。哈夫曼树又称为最优二叉树,它是n个带权叶子节点构成的所有二...原创 2018-11-19 19:31:41 · 306 阅读 · 0 评论 -
线索二叉树
已知各种形态的二叉树,假设有n个节点,那么其二叉链表有2n个链域,其中n-1个是非空,n+1个是空链域,那么为了充分利用这些空指针,让这些空指针指向其他节点,这些指针称为线索,该二叉链表又称为线索链表,该二叉树称为线索二叉树(另外设置一个头节点指向树的根)。建立线索有相应的规则,以中序线索二叉树为例:对于一个节点,如果它的左孩子为空,则令其左指针指向该节点在中序遍历时的前驱节点;如果它的右...原创 2018-11-16 09:13:35 · 386 阅读 · 0 评论 -
字符串哈希
Hash算法的意义在于提供了一种快速存取数据的方法。通过把任意长度的输入(又称预映射)通过哈希算法(哈希函数)转化成某种固定长度的输出,该输出即为哈希值(又称散列值):一般就将该哈希值作为数组的下标,将该输入存入其所指向的数组空间(该数组称为哈希表)中。那么再次查找该元素不必遍历数组而是通过计算该元素的哈希值进行直接访问。但是这种转换一般是一种压缩映射,即散列的空间远小于输入的空间,可能会有不...原创 2018-11-08 19:29:27 · 326 阅读 · 0 评论 -
基于数组实现简易栈
手工栈的简单实现是借用数组完成,可以实现入栈出栈,检查栈是否为空等操作,实现的栈具有先进后出的特性。typedef struct Stack{ char data[1001]; //用来存放记录在栈中的数据 int top; //栈顶指针 int base; //栈底指针}Stack;Stack s;其中栈顶栈底指针...原创 2018-08-31 20:38:37 · 251 阅读 · 0 评论 -
堆排序
堆分为大根堆和小根堆,大根堆应用于升序排列,小根堆应用于降序排列。二叉堆借助数组实现,n个元素装在数组a[0]...a[n-1]中。堆排序是不稳定的排序。利用大根堆的性质即其首元素是最大值。将首元素与a[n-1]互换,从a[0]到a[n-2]再重新调整为大根堆,此时a[n-1]有序;继续将首元素与a[n-2]互换,从a[0]到a[n-3]再重新调整为大根堆,此时a[n-2]a[n-1]有序;依...原创 2018-08-15 17:57:05 · 426 阅读 · 0 评论 -
二叉排序树BST与堆的区别
原文出处:https://blog.csdn.net/UP19910522/article/details/49945785在二叉排序树中,每个结点的值均大于其左子树上所有结点的值,小于其右子树上所有结点的值,对二叉排序树进行中序遍历得到一个有序序列。所以,二叉排序树是结点之间满足一定次序关系的二叉树。堆是一个完全二叉树,并且每个结点的值都大于或等于其左右孩子结点的值(这里的讨论以...转载 2018-08-14 22:19:32 · 1477 阅读 · 0 评论 -
二叉堆的实现及STL的优先队列
数据结构中的堆与内存模型中的堆不同,堆通常被看作一棵完全树,并且堆中子节点的数值总是不大于或不小于父节点的值。二叉堆是一棵完全二叉树,其分为大根堆和小根堆。通常使用数组来实现二叉堆,其父子节点间存在位置关系为:索引为i的节点的左孩节点为2*i+1,右孩节点为2*i+2,其父节点为(i-1)/2。二叉堆的实现核心是添加节点(添加到末尾向上调整)和删除节点(末尾元素覆盖向下调整)添加节点的...原创 2018-08-14 22:08:19 · 402 阅读 · 0 评论 -
BST二叉查找树
二叉查找树,也称二叉搜索树或二叉排序树,其有如下的性质: 若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值 任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值 任意节点的左、右子树也分别为二叉查找树 没有键值相等的节点 基于二分的思想,二叉查找树的优势在于其查找、搜索的时间复杂度低为O(logN),中序遍历输出的结果是单...原创 2018-07-15 12:59:06 · 428 阅读 · 0 评论 -
AVL平衡二叉查找树
AVL树是带AVL树是根据它的发明者G.M. Adelson-Velsky和E.M. Landis命名的。有平衡条件的二叉查找树,这个平衡条件要容易保持,保证树的深度是O(logN)。定义AVL树是每个节点左子树和右子数高度最多差1的平衡二叉树。AVL树是对BST树的一种优化,我们知道BST树插入的最坏情况是退化为线性数组,这样就大大降低了二分查找的效率,而AVL树在插入的时候会做旋转优化尽量...原创 2018-07-25 21:13:19 · 286 阅读 · 0 评论 -
内部排序算法
外部排序:待排序的记录数量很大,以至内存不能一次全部容纳,在排序过程中还需对外存进行访问。内部排序:待排序记录存放在计算机随机存储器中进行的排序过程。内部排序大致分为五类:插入排序,交换排序,选择排序,归并排序和计数排序。常用基于比较的排序算法:冒泡排序、插入排序、选择排序、希尔排序、归并排序、快速排序非比较的排序算法:计数排序、桶排序、基数排序 插入排序1.直接插入排序...原创 2018-12-10 19:50:04 · 323 阅读 · 0 评论