java数据结构
java数据结构
growing_duck
这个作者很懒,什么都没留下…
展开
-
数据结构-数组
数据结构-数组原创 2021-11-16 19:42:24 · 86 阅读 · 0 评论 -
数据结构-红黑树
了解红黑树前,先认识一下二三树。 二三树: 普通的二叉树,一个节点存一个元素,有两个孩子,称为二树。 二三树中,允许一个节点存两一个或两个元素,有两个或三个孩子。 添加元素时,会与前面节点融合,当超过三个孩子时,向上融合。看看添加过程: 添加42: 添加37,与前面节点融合,成为三树: 添加12,与前面节点融合,成为四树,不满足二三树,中位数向上与父亲融合,成为新的二三树: 添加18: 添加6:左孩子不满足,12向上...原创 2021-11-24 19:59:20 · 507 阅读 · 0 评论 -
数据结构-平衡二叉树
平衡二叉树:对于任意节点,左子树和右子树的高度差不大于1。 普通二分搜索树,如果按顺序添加元素,会退化成链表。 public class AVLTree<K extends Comparable<K>, V> { private class Node { public K key; public V value; public Node left, right; public int height;原创 2021-11-23 17:26:25 · 110 阅读 · 0 评论 -
数据结构-线段树
如上图: 线段树是一颗满二叉树,叶子节点如果没有值,用null表示。 非空叶子节点就是基础数据,树中每个父亲节点代表左右孩子的结果集(比如求合,最大值,最小值等,自己定义算法,传入左右孩子即可)。 那么有n个元素,构建线段树需要开辟多少空间? 对于满二叉树,每一层节点数量都是前面所有节点数量之和+1。 也就是说,如果最后一层有n个节点,整棵树就约为2n个节点。 如果此时n为2的k次方,所有元素刚好在最后一层,整棵树约就是2n。 如果再多一个元素,就需要开辟下一层空间,如上图那样,整棵树就需...原创 2021-11-23 15:56:55 · 617 阅读 · 0 评论 -
数据结构-堆
堆其实就是二叉树,只不过父亲节点永远比左右孩子大(或者小),成为最大堆(最小堆)。 根节点永远是最大(最小)。 注意:它不是二分搜索树(根节点比左孩子大,比右孩子小)。 虽然堆是一颗树,内部可以用一个数组来表示。 将每个节点按索引位置对应到数组中。在操作时,先根据二叉树的特性,算出索引,然后操作数组中的数据。 如下图: 上图中:给任意一个节点的索引,可以算出其父亲节点,左孩子和右孩子的索引,去操作数组中对应索引位置的数据。 下面,实现一个最大堆: public class MaxHea..原创 2021-11-23 14:09:15 · 72 阅读 · 0 评论 -
数据结构-集合映射
集合映射原创 2021-11-23 11:09:07 · 93 阅读 · 0 评论 -
数据结构-二分搜索树
完全二叉树:节点从左到右以此排列,除最后一层节点外,其他每一层都是满节点 平衡二叉树:每一个节点的左右子树高度差,不能大于1 满二叉树:每一层的节点都是满的 /** * 二分搜索树 */ public class BST<E extends Comparable<E>> { private class Node { private E e; private Node left; private Node rig原创 2021-11-23 10:29:19 · 116 阅读 · 0 评论 -
数据结构-链表
链表,其实就是由多个节点组成,而节点就是由存放的值和指针组成。 package LinkedList; public class LinkedList<E> { private class Node { private E e; private Node next; public Node(E e, Node next) { this.e = e; this.next = next;原创 2021-11-17 11:09:15 · 542 阅读 · 0 评论 -
数据结构-栈和队列
队列原创 2021-11-16 20:03:01 · 512 阅读 · 0 评论