数据结构
文章平均质量分 61
yukjin
这个作者很懒,什么都没留下…
展开
-
遍历二叉树
递归遍历: public static String scanTree(TNode t) { String result=""; int n=0; if(t!=null) { result+=scanTree(t.left); result+=t.nodeValue+" "; result+=scanTree(t.right);原创 2013-01-25 13:38:46 · 355 阅读 · 0 评论 -
测试图中是否有环
一个图中是否有环跟利用深度优先搜索中是否出现回边是同一个问题 //determine if the graph is acyclic public static boolean acyclic(DiGraphg) { //use for calls to dfsVisit() LinkedList dfsList=new LinkedList(); Iterator grap原创 2013-03-24 12:32:05 · 823 阅读 · 0 评论 -
广度优先搜索与深度优先搜索
广度优先搜索的方式模仿二叉树的层序遍历,利用一个队列存储adjacency vertex,利用white,gray and black 标示节点的三种状态。white表示未访问,gray表示已发现但为访问,也就是处于队列节点的状态,black表示已访问,也就是从队列中弹出的节点。 /*图算法*/ //breath first search public static LinkedList b原创 2013-03-24 10:39:47 · 826 阅读 · 0 评论 -
Hash(code and explaination)
package practice; import java.util.Collection; import java.util.ConcurrentModificationException; import java.util.Iterator; import java.util.NoSuchElementException; public class Hash implements Coll原创 2013-03-17 11:52:02 · 700 阅读 · 0 评论 -
基数排序
基数排序是一种线性排序,分为distribute(分配)和collect(回收)两个阶段。 算法需要:长度为10的队列。 每一轮分配,按照radix(基数)分别进入相应队列 例如待排序列为14,22,41,32,25,65,57 第一趟分配按照个位入队列 则每个队列为: 0号:空 1号:41 2号:22,,32 3号:空 4号:14 5号:25,65 6号:空 7号:57原创 2013-03-15 10:32:33 · 798 阅读 · 0 评论 -
堆的构建以及利用堆排序
堆其实就是一个基于数组的二叉树,由于本身是数组,因此相比于普通二叉树,它可以通过简单的数值计算就能够访问节点。堆有最大堆和最小堆之分,最大堆中每个父节点值大于或等于子节点的值,最小堆则相反。 对于n元素数值而言,它的每个节点arr[i]的子节点点索引分别问2*i+1,2×i+2,根节点为0 以最大堆为例,向一个堆中添加节点时,需要将父节点路径上的节点向下移动一层,知道这个节点位于正确的位置原创 2013-03-13 20:47:32 · 733 阅读 · 0 评论 -
搜索二叉树的应用
一个简单的在线租赁程序,利用文本文件作为其后台数据库。 搜索树充当临时数据库,借助搜索树的高效性,租借功能直接对数进行操作,最后在关闭窗口时再迭代的将树中每个节点存储的内容复制到文本文件里。 界面: 左侧为仍然拥有的东西以及每个东西的数量,右侧是已经借出的东西,这些东西从上至下按字母顺序排列,Tool文本框输入你想要借的东西, 底端两个按钮分别负责借和还,底端右侧文本框用来原创 2013-03-10 14:50:51 · 1178 阅读 · 0 评论 -
二叉搜索树
package tree; import java.util.Collection; import java.util.Iterator; public class STree implements Collection { private STNode root; private int treeSize; private int modCount; public STree()原创 2013-03-08 12:38:28 · 567 阅读 · 0 评论 -
求K个最小的数
在若干个数中求出k个最小的数,利用快速排序找基准值的原理定位k的位置所在 时间复杂度O(n) public static void findK(int[]arr,int k,int first,int last) { int index=pivotIndex(arr,first,last); if(index==k) return; else if(ind原创 2013-03-06 17:44:48 · 472 阅读 · 0 评论 -
欧拉回路及其简单应用
public static String euler(TNode t) { String s=""; if(t!=null) { if(t.left==null&&t.right==null) s+=t.nodeValue; else { s+="("; s+=euler(t.left); s+=t.nodeValue原创 2013-01-25 13:44:23 · 505 阅读 · 0 评论 -
构建表达式树
public static TNode buildExpTree(String postfixExp) { AStack> stack=new AStack>(); TNode newNode,newLeft,newRight; char token; int i=0; int n=postfixExp.length(); while(i<n) {原创 2013-01-25 13:41:35 · 702 阅读 · 0 评论 -
绘制二叉树
首先对所要绘制的二叉树进行复制及扩展,即构造映像树 递归方式构造: public staticTNodeShadow buildShadowTree(TNode t,int level) { TNodeShadow newNode=null; String str; if(t!=null) { newNode=new TNodeShadow(); T原创 2013-01-25 13:50:21 · 611 阅读 · 0 评论 -
图的设计与实现
package deno.Graphics; import java.awt.Color; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.Collection; impor原创 2013-03-22 16:23:22 · 749 阅读 · 0 评论