数据结构
文章平均质量分 79
BOY
这个作者很懒,什么都没留下…
展开
-
TreeMap--利用反射得到TreeMap中树的结构,也就是得到root
如果想要得到其个对象的成员属性,这个成员性质类型为包级私有内部类,而且该成员为私有,那么怎么得到该成员呢?思路:假设我们要研究的对象是TreeMap,我们想得到TreeMap对象的root首先, TreeMap.class.getDeclaredClasses() 得到所有内部类,如root为内部类Entry,即clazz = TreeMap.class.getDeclaredCl原创 2012-05-05 17:15:26 · 973 阅读 · 0 评论 -
SkipList跳表
SkipList 跳表博客分类: algorithms为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。 想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要转载 2012-08-01 15:09:03 · 666 阅读 · 0 评论 -
java.util.LinkedList
package java.util;/** * * This class is a member of the * * Java Collections Framework. * * @author Josh Bloch * @version 1.67, 04/21/06 * @see List * @see ArrayList * @see V原创 2012-04-13 20:39:01 · 1618 阅读 · 0 评论 -
HashMap
/* * @(#)HashMap.java 1.73 07/03/13 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.util;import原创 2012-04-17 16:30:45 · 1343 阅读 · 0 评论 -
数状数组的原理与应用
package arithmetic;import java.util.*;public class TreeArray { public static int[] conver(int array[]) { int tree[] = new int[array.length]; Arrays.fill(tree,0); for(int i=1;i<=array.lengt原创 2011-11-24 09:38:29 · 580 阅读 · 0 评论 -
线段树的建立与应用---区间求和
package arithmetic;class Segment{ int left; int right; int count=0; int sum =0;}public class SegmentTree { public static int num[] = new int[5000]; public static void main(String args[])原创 2011-11-27 20:03:23 · 900 阅读 · 0 评论 -
红黑树---插入
先样子,先把红黑树的性质贴上:性质1. 节点是红色或黑色性质2. 根是黑色性质3. 所有叶子都是黑色(叶子是NIL节点)性质4. 如果一个节点是红的,则它的两个儿子都是黑的性质5. 从任一节点到其叶子的所有简单路径都包含相同数目的黑色节点。下面直接写插入方法,像查找树的添加、删除、及树的旋转不再说了,不懂的再查其他资料1.插入节点默认原创 2012-04-25 13:58:35 · 2232 阅读 · 0 评论 -
字典树的建立、删除、查找
package arithmetic;import java.util.*;class DicNode{ int count;//当前字符在这个位置出现的次数 int next[] = new int[26];//其下一个字符的指针 ,next[i] 中, i 表示字符 ch , next[i] 表示地址 public String toString() { StringBuff原创 2011-12-03 16:19:44 · 2011 阅读 · 0 评论 -
二叉查找树
二叉查找的中序遍历是一个有序序列,由于插入与修改都相当简单,这里不说了,说一下二叉查找树的删除删除结点有三种情况,删除的结点为P1.P没有子结点2.P有一个子结点3.P有两个子结点在上面 1.2 两种情况下的删除都很简单,也不多说,只说一下第三种情况上面说过,二叉树的中序遍历是一个有序序列,如果 [1,2,3,4],当我们删除2时,可以将3的值赋值给2,然后再将3删原创 2012-04-20 17:01:53 · 295 阅读 · 0 评论 -
红黑树---删除
还是老样子,先上性质:性质1. 节点是红色或黑色性质2. 根是黑色性质3. 所有叶子都是黑色(叶子是NIL节点)性质4. 如果一个节点是红的,则它的两个儿子都是黑的性质5. 从任一节点到其叶子的所有简单路径都包含相同数目的黑色节点。我们定义:我们由二叉查找树的删除可知,那个最后被真正删除的结点一定是一个只有一个孩子结点或一个孩子结点都没有原创 2012-04-26 08:31:48 · 3010 阅读 · 0 评论 -
TreeMap中有序序列建红黑树--buildFromSorted
public void putAll(Map map) { int mapSize = map.size(); if (size==0 && mapSize!=0 && map instanceof SortedMap) { // 如果是有序Map,则执行自定义方法,否则调用父类putAll Comparator c = ((S原创 2012-05-05 16:26:30 · 4394 阅读 · 0 评论 -
Java 中TreeSet关于添加Key为空问题
TreeMap 中的get(Object)方法调用是 Entry getEntry(Object key)该方法如果 key == null 会抛出异常,所以这个要注意,在添加的时候,如果比较器不为空的话,就根据比较器比较结果进行插入,如果比较为空,如果插入Key为空的话,就直接异常,为什么会这样做呢,因为TreeMap是一个红黑树结构,其结构是根据键值的排序进行建立的,之所以比较器不为空原创 2012-05-05 18:37:12 · 2013 阅读 · 0 评论 -
判断单链表是否有环
1、如何判断一个链表是不是这类链表? 2、如果链表为存在环,如果找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow每次前进一步,fast每次前进二步,如果链表存在环,则fast必定先进入环,而slow后进入环,两个指针必定相遇。(当然,fast先行头到尾部为NULL,则为无环链表)程序如下:boo转载 2012-10-27 10:18:40 · 441 阅读 · 0 评论