- 博客(8)
- 资源 (3)
- 问答 (5)
- 收藏
- 关注
原创 平衡二叉搜索树的实现原理
二叉搜索树的树高与性能前面笔者介绍了二叉搜索树的实现和性能分析,查询,插入和删除等操作均线性正比于二叉树的高度。在最坏的情况下,线性表退化为列表,二叉搜索树的性能会降低至O(n)。因此,如果能控制树高,则二叉搜索树的性能会明显提升理想平衡与适度平衡理想平衡既然二叉搜索树的性能主要影响与树高,则应该在节点数目固定的前提下,尽可能降低树高。也意味着,应尽可能地使兄弟子树的高度彼此接近,即全树尽可能的平衡
2017-12-31 22:08:21 1414
原创 二叉搜索树基本操作的实现
对线性表比较熟悉的读者会很清楚线性表的查找性能。无论是链式存储或是顺序存储,在最坏情况或是平均情况下都查需要线性时间。另外,对于堆和栈两种特殊的线性表甚至不提供对任一元素的查找接口。因此,若需要对象集合的组成可以高效地动态调整,又能高效的查找,则线性表很难胜任。高效率的动态修改和高效率的静态查找,是否能够兼顾?如果能,需要采取什么样的数据结构。笔者接下来的几篇博文,将回答这个问题。即采用树...
2017-12-31 19:15:15 1178
原创 从最小支撑树和最短路径树学习图的优先级搜索
前面笔者介绍了图的广度优先搜索算法和图的深度优先搜索。这两种搜索虽然各有特点,但基本结构却几乎相同。都需要通过迭代逐一发现各顶点,将其归纳到遍历树中做相应的处理。两种算法的唯一差别在于,如何选取下一个节点的问题。如果将选取下一节点的策略抽象为获取优先级最高的节点,则对于BFS或是DFS则可统一处理,他们的区别仅在于更新节点的优先级的策略不同而已。根据优先级来遍历,称为优先级搜索。
2017-12-17 16:02:11 2831
原创 图的拓扑排序及其应用
拓扑排序的定义对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序得到该集合上的一个全序,这个操作称之为拓扑排序。
2017-12-06 00:28:18 5424
原创 图的深度优先搜索算法并生成DFS树
前面一篇文章介绍了图的广度优先搜索算法和BFS树,这篇文件笔者将介绍另一种图的遍历算法-深度优先算法概述深度优先搜索(Depth-First Search,DFS)选取下一顶点的策略,可概括为:优先选取最后一个被访问到的顶点的邻居。以顶点 s 为基点的 DFS 搜索,将首先访问顶点 s;再从 s 所有尚未访问到的邻居中任取其一,并以之为基点,递归地执行 DFS 搜索。
2017-12-04 00:59:53 19703 3
原创 图的广度优先搜索算法并生成BFS树
笔者在前面的两篇文章中介绍了图的两种实现方法: 图的邻接表的实现 图的邻接矩阵的实现 接下来笔者将介绍图遍历算法
2017-12-04 00:11:24 19504 1
原创 图的邻接矩阵的实现
对于图的一些基本概率和术语的内容汗牛充栋,故本文不会做过多解释。仅仅总结下笔者学习图的邻接矩阵的相关知识邻接矩阵的实现原理邻接矩阵(adjacency matrix)是图ADT最基本的实现方式,使用二维数组A[n][n]来表示由n个顶点构成的图。
2017-12-03 19:01:51 30970
关于java网络编程中获取输入流中数据的问题?
2016-01-26
ServletContext().getRealPath("/");获取路径的问题
2015-12-04
linux给用户root权限的方法
2015-06-01
TreeSet的Iterator遍历问题
2015-04-29
子类强制转换为父类是不是只能转第一父类????
2014-12-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人