
数据结构与算法
文章平均质量分 90
Mind_V
这个作者很懒,什么都没留下…
展开
-
红-黑树——C++实现
一、红-黑树基本概念红-黑树(Red-Black tree)是一种特殊的二叉查找树,因此具有二叉查找树的特征:任意一个节点所包含的关键字,大于左孩子的关键字,小于右孩子的关键字。树中每一个节点的颜色或者是黑色或者是红色,和AVL树一样具有平衡性。每一个空指针用一个外部结点来替代,红-黑树的性质可以描述为:RB1:根节点和外部节点都是黑色。 RB2:在根至外部节点路径上,没有连续两个节点是红色。原创 2017-05-27 10:56:44 · 806 阅读 · 0 评论 -
AVL树—— C++实现
AVL树的介绍AVL树的C实现AVL树节点AVL树接口旋转操作核心1 LL的旋转2 RR的旋转3 LR的旋转4 RL的旋转完整的实现代码AVL树的介绍二叉查找树的深度越小,那么查找所需要的运算时间越小。一个深度为log(n)的二叉查找树,查找算法的时间复杂度也是log(n)。然而,我们在二叉查找树中已经实现的插入和删除操作并不能让保持log(n)的深度。如果我们按照8,7,6,5,转载 2017-05-22 11:12:41 · 710 阅读 · 0 评论 -
图——C++实现
基本概念 图(graph)是用线连接在一起的顶点或节点的集合,即两个要素:边和顶点。每一条边连接个两个顶点,用(i,j)表示顶点为 i 和 j 的边。 如果用图示来表示一个图,一般用圆圈表示顶点,线段表示边。有方向的边称为有向边,对应的图成为有向图,没有方向的边称为无向边,对应的图叫无向图。对于无向图,边(i, j)和(j,i)是一样的,称顶点 i 和 j 是邻接的,边(i,j原创 2017-07-25 14:45:27 · 16372 阅读 · 0 评论 -
哈希表HashTable
哈希表概念哈希表(Hash Table),又称散列表,是字典结构的其中一种表达方式,可以根据数对的键值(Key value)映射到数组中的位置而对元素进行直接访问,时间复杂度为O(1)。其实现原理很简单,即使用一个哈希函数把键值转换成一个整型数字,数字对数组长度取余,即得到数组的索引。原创 2017-10-22 22:27:04 · 595 阅读 · 0 评论 -
二叉树前序、中序和后序的非递归遍历
把经典问题:二叉树的非递归遍历理了理,顺便做个笔记。 核心思路就是节点的压栈和出栈。#include #include#includeusing namespace std;struct TreeNode { int val; TreeNode* left; TreeNode* right; TreeNode(int x) : val(x) {原创 2017-10-09 17:18:13 · 438 阅读 · 0 评论 -
贪心算法——单源最短路径(Dijkstra算法)
单源最短路径——Dijkstra算法问题描述对于给定的加权有向图G(加权邻接数组表示),它的每一条边(i,j)都有一个固定成本(权值)a[i][j],一条路径的长度就是该路径上所有边的的成本之和。如下图所示,路径124的长度是8,路径125的长度是9。 寻找一条从给定的一个源顶点出发到任意顶点的(目的顶点)的最短路径。如1到5的最短路径为1345。贪心法求解根据贪婪法,每一步生成一条当前顶点的最短原创 2017-06-09 21:22:36 · 3244 阅读 · 0 评论