摘要:
1.关于堆空间和栈空间 局部变量放栈空间 new 出来的对象 放堆空间 下面式例中 左边是局部变量 右边是new出来新对象 堆空间需要主动释放(例如像C++) java不需要堆空间主动释放 因为里面有垃圾回收机制 垃圾回收机制 就是看有没有引用指向该变量的 垃圾回收不会主动去回收 主动回收需要写代码 阅读全文
摘要:
1.红黑树 1.1简介 1.2请问下面这棵树是红黑树吗? 1.3红黑树等价交换 1.4红黑树 vs 2-3-4树 1.5几个英文单词 1.6一些辅助函数 2.常用方法 2.1添加 2.2添加所有情况 2.3添加--修复性质4--LL\RR 2.4添加--修复性质4--LR\RL 2.5添加--修复性 阅读全文
摘要:
1.B树 1.1B树基本概念 1.2m阶B树的性质(m>=2) 3阶B树 4阶B树 表示一个节点最多拥有3,4个子节点 1.3B树VS二叉搜索树 两代 三代合并指的是从根节点开始算 一个节点能存储多个值的叫做超级节点 2.B树常用方法 2.1搜索 2.2添加 B树变高 就是上溢操作一直传播到根节点 阅读全文
摘要:
1哈希 1.1HashMap基本概念 1.2需求 1.3哈希表 1.4哈希冲突 1.5JDK解决哈希冲突方法 jdk8解决hash冲突的办法是通过 默认使用单向链表将元素串起来的 而且是从头到尾挨个比较key值然后在插入的 2.哈希函数 2.1基本概念 取模的计算 使值小于除数值 取模的计算 使值小 阅读全文
摘要:
1.映射 1.1基本概念 1.2接口设计 1.3Map与Set区别 2.相关代码 Map public interface Map<K, V> { int size(); boolean isEmpty(); void clear(); V put(K key, V value); V get(K 阅读全文
摘要:
1.集合 1.1基本概念 1.2相关知识 1.2.1集合与链表数组等数据结构区别 之前学习的链表和动态数组是不需要遍历这个接口的 因为他们有索引这一概念所以不需要 而集合这一数据结构 需要使用遍历这一接口的 1.2.2两种实现方式 集合有两种实现方式 第一种通过链表 另外一种通过红黑树实现 1.2. 阅读全文
摘要:
1.AVL树基本介绍 1.1名字由来 1.2AVL树属性 1.3平衡对比 1.4简单的继承结构 1.5添加导致的失衡 2.AVL树的四种旋转 通过旋转来解决添加或删除导致AVL树失衡 2.1LL-右旋转(单旋) 2.2RR-左旋转(单旋) 2.3RL-LL右旋转,RR左旋转(双旋) 2.4LR-RR 阅读全文
摘要:
1.重构二叉树 1.1前序遍历+中序遍历重构二叉树 1.2前驱节点 1.3后继节点 1.4根据元素获取节点 2.删除节点 2.1删除叶子节点 2.2删除度为1的节点 2.3删除度为3的节点 2.4相关代码 public void remove(E element) { remove(node(ele 阅读全文
摘要:
1.二叉树的遍历 1.1前序遍历 递归遍历 前序非递归遍历 代码-递归版本 /** * 前序遍历 */ public void preorderTraversal() { preorderTraversal(root); } private void preorderTraversal(Node<E 阅读全文
摘要:
1.何为二叉搜索树 1.1二叉搜索树的接口设计 我们节点在哪一层和添加的顺序无关所以 BST不需要索引 1.2添加节点 1.3元素比较方案 通过创建比较器接口实现自定义比较规则 即使是相同对象 相关代码 1.4可视化网站推荐 http://520it.com/binarytrees/ http:// 阅读全文