数据结构
ApacheCrazyFan
巨人的肩膀
展开
-
Java基础 - 图论之相关定义
1图:一个图(graph)G=(V,E)由顶点(vertex)的集V和边(edeg)的集E组成。每一条边就是一副点对(v,w),其中v,w∈V。有时也把边称作弧(arc)。如果点对是有序的,那么图就是有向(directed)的。有向的图有时也叫作有向图(digraph)。顶点w和v领接(adjacent)当且仅当(v,w)∈E。在一个具有边(v,w)的无向图中,w和v邻接且v和w也邻接,有时原创 2017-01-04 23:03:37 · 865 阅读 · 0 评论 -
Java基础 - 节点自平衡树(Size Balanced Tree,简称SBT)
package com.yc.tree;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Deque;import java.util.List;public class SizeBalancedTree >{ public class Node{ //data域:存放数据项 T原创 2016-12-09 16:08:59 · 1371 阅读 · 1 评论 -
Java基础 - 替罪羊树(Scapegoat Tree)
package com.yc.tree;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Deque;import java.util.List;/** * @author wb * @param * * 替罪羊树的定义: * 1.是一种二叉排序树 * 2.根节点存储了树的节原创 2016-12-12 17:02:18 · 2408 阅读 · 1 评论 -
Java基础 - 伸展树(SplayTree)
伸展树的基本操作有:1.查询2.添加3.删除4.树的最大节点5.树的最小节点6.节点的前驱7.节点的后继8.合并9.分离下面是我完成的部分功能代码(除节点的后继,大家可以仿照求节点的前驱的方法来求后继,很简单):package com.yc.tree;import java.util.ArrayDeque;import java.util.Arra原创 2016-12-05 20:54:39 · 1983 阅读 · 0 评论 -
Java基础 - 红黑树
package com.yc.tree;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.Deque;import java.util.List;/** * @author wb * @param * * 排序二叉树虽然可以快速检索,但在最坏的情况下,如果插入的节点集本身就是有序原创 2016-11-24 16:11:08 · 616 阅读 · 0 评论 -
Java基础 - 平衡二叉查找树(AVL树)
平衡二叉查找树(height balanced binary search tree)在1962年由Adelson-Velskii和Landis提出,因此又称为AVL树。AVL树定义为:一棵空树是平衡二叉查找树;假设T不是空的树,TL和TR分别是此 二叉树的左子树和右子树,如符合下列两个条件,则称T为平衡二叉查找树:(1)TL和TR亦是平衡二叉查找树;(2) |hL - hR| <= 1,其中hL和hR分别是TL和TR的高度。原创 2016-12-01 21:58:15 · 912 阅读 · 0 评论 -
Java基础 - 跳表(SkipList)
跳表(skiplist)是一个非常优秀的数据结构,实现简单,插入、删除、查找的复杂度均为O(logN)。LevelDB的核心数据结构是用跳表实现的,redis的sorted set数据结构也是有跳表实现的。跳表同时是平衡树的一种替代的数据结构,但是和红黑树不相同的是,跳表对于树的平衡的实现是基于一种随机化的算法的,这样也就是说跳表的插入和删除的工作是比较简单的。下面来研究一下跳表的核心思想:原创 2016-12-22 01:52:24 · 987 阅读 · 0 评论 -
Java基础 - 字典树(Trie树)
本文转载由http://blog.csdn.net/jiutianhe/article/details/8076835提供1. Trie树Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率转载 2016-12-23 11:06:01 · 3807 阅读 · 0 评论 -
Java基础 - 2-3树
定义和二叉树不一样,2-3树运行每个节点保存1个或者两个的值。对于普通的2节点(2-node),他保存1个key和左右两个自己点。对应3节点(3-node),保存两个Key,2-3查找树的定义如下:1. 要么为空,要么:2. 对于2节点,该节点保存一个key及对应value,以及两个指向左右节点的节点,左节点也是一个2-3节点,所有的值都比key有效,有节点也是一个2-3节原创 2016-12-30 15:43:49 · 1890 阅读 · 0 评论 -
Java基础 - 图论的起源于发展
一、图论的起源图论是一个古老的但又十分活跃的数学学科,也是一门很有实用价值的学科,它在自然科学、社会科学等各领域均有很多应用。近年来它受计算机科学蓬勃发展的刺激,发展极其迅速。应用范围不断拓广,已渗透到诸如语言学、逻辑学、物理学、化学、电讯工程、计算机科学以及数学的其它分支中。1736年是图论的历史元年。这一年,欧拉(L•Euler)研究了哥尼斯堡城(Königsberg)的七桥问原创 2016-12-31 23:29:19 · 3003 阅读 · 0 评论 -
图论之图形的表示方法(一)-数组表示法/相邻矩阵法/邻接矩阵法
package com.yc.graph;/** * @author wb * @since 2017年1月9日15:37:07 * @category 图的存储结构之-数组表示法/相邻矩阵法/邻接矩阵法 * {@docRoot} * 对于一个图形G=(V,E),假设有n个顶点,n≥1,则可以将n个顶点的图形,利用一个n x n二维矩阵来表示,其中假设A(i,j)=1,则表示图形...原创 2017-01-09 19:32:14 · 2592 阅读 · 0 评论