数据结构
RayBreslin
大数据开发、设计企业应用
展开
-
(转)最容易懂得红黑树
【转载原因:参考理解红黑树】【转载原文:https://blog.csdn.net/v_JULY_v/article/details/6105630】转载 2020-01-30 21:52:07 · 144 阅读 · 0 评论 -
数据结构(13):平衡二叉树(AVL)实现
一、平衡二叉树定义平衡二叉树定义,对于任意一个节点,左子树和右子树的高度差不能超过1.特性:平衡二叉树的高度和节点数量之间的关系是O(logn)。二、标注1.平衡因子:左右两个子树的高度差。如果平衡因子绝对值>=2,则不是平衡二叉树,如下图三、平衡基本操作1.右旋转(1)原始树(2)右旋转:旋转为(3)证明右旋转后,满足平衡二叉树和二分搜索树(节点...原创 2019-11-24 10:26:59 · 697 阅读 · 0 评论 -
数据结构(12):并查集实现
一、并查集功能对于一组数据,主要支持两个动作1. union(p,q):链接p,q两个元素所在的集合2. isConnected(p,q):判断两个元素所在集合是否为同一个集合二、功能实现模块分析1. find(p):找到元素p所在的集合根节点,时间复杂度O(1)2. union(p,q):时间复杂度:O(n)3. isConnected(p,q):时间复杂度:O(...原创 2019-11-23 12:52:50 · 135 阅读 · 0 评论 -
数据结构(6):递归调用原理以及调试
一、实现功能递归算法实现原理,通过代码以及图解的方式,解释递归过程,从而使对递归算法有更加清晰和深入的理解。二、递归基本流程1.基本步骤(1)求解原始问题转换为最小最基本的问题(2)把原始问题转换为更小的问题2.简单实现:数组加和package com.DataStructures._05Recursion;/** * Created by Administrat...原创 2019-11-19 12:57:48 · 803 阅读 · 0 评论 -
数据结构(9):基于二分搜索树和链表的映射实现
1.映射定义存储键值对的数据结构,实现根据键,查找值的功能。2.映射实现功能(1)void add(K,V)(2)V remove(K)(3)boolean contains(K)(4)V get(K)(5)void set(K,V)(6)int getSize()(7)boolean isEmpty()(8)映射接口实现public interfac...原创 2018-12-18 21:52:26 · 221 阅读 · 0 评论 -
数据结构(8):基于二分搜索树和链表的集合实现
一、集合特性不能放重复元素的一些列数的集合。主要应用在:客户统计和词汇量统计。二、集合实现功能1.void add(E)2.void remove(E)3.boolean contains(E)4.int getSize(E)5.boolean isEmpty(E)6.集合接口实现public interface Set<E> { void...原创 2018-12-18 21:33:22 · 150 阅读 · 0 评论 -
数据结构(7):二分搜索树
一、定义1.二分搜树是二叉树2.二分搜索树的每个节点的值的特性 (1)大于其左子树的所有节点的值 (2)小于其右子树的所有节点的值3.每一棵子树也是二分搜索树二、代码实现功能1.添加元素2.遍历元素(1)前序遍历顺序实现: ->节点 -> preOrder(node.left); -> preOr...原创 2018-12-17 18:36:19 · 165 阅读 · 0 评论 -
数据结构(5):链表实现栈和队列
一、链表实现栈1.链表代码https://blog.csdn.net/u010886217/article/details/85014250中链表LinkedVirtualHeadList实现类2.链表实现栈的java代码(1)stack接口public interface stack<E> { int getSize(); //获得元素个数 bo...原创 2018-12-15 15:53:50 · 324 阅读 · 0 评论 -
数据结构(4):链表
1.链表定义数据存储在节点(Node)中,每个节点包含指向下一个节点的信息。2.特点(1)优点:真正的动态数据结构,可以任意添加以及删除数据(2)缺点:丧失了随机访问元素的功能3.链表java实现public class LinkedVirtualHeadList<E> { //链表中节点类 private class Node{ ...原创 2018-12-15 15:17:50 · 174 阅读 · 0 评论 -
数据结构(3):队列
1.队列定义只允许在一端进行插入操作,而在另一端进行删除操作的线性表,即先进先出。(FIFO:First In First Out)2.队列实现功能(1)入队 enqueue(2)出队 dequeue(3)获取最前面的元素 getFront3.java代码实现(1)queue接口public interface queue<E> { int g...原创 2018-12-15 14:05:38 · 150 阅读 · 0 评论 -
数据结构(2):栈
1.栈的定义仅仅限定在表尾进行插入和删除操作的线性表,即后进先出。2.栈的应用(1)程序调用的系统栈,可以实现(2)常见程序的撤销操作。3.实现栈功能(1)进栈 push(2)出栈 pop(3)查询顶端元素 peek4.实现java代码(1)实现栈接口public interface stack<E> { int getSize()...原创 2018-12-15 13:06:20 · 114 阅读 · 0 评论 -
数据结构(1):数组
1.数组优势(1)快速查询(2)适用于有语境的情况2.制作私有数组(1)使用泛型,从而可以实现存储多种类型数据(2)可以动态扩容或者缩容(3)实现增删改查基本操作3.java实现public class ArrayDynamic<E> { private E[] data; //数组 private int size; //数组中实际...原创 2018-12-15 12:28:53 · 143 阅读 · 0 评论 -
数据结构(11):优先队列
1.定义出对顺序和如对顺序无关,和优先级有关2.使用场景动态选择优先级最高的任务执行,即动态任务处理中心处理任务的原则。3.接口public interface queue<E> { int getSize(); boolean isEmpty(); void enqueue(E e); E dequeue(); E get...原创 2018-12-20 08:24:55 · 207 阅读 · 0 评论 -
数据结构(10):堆
1.定义:二叉堆是一颗完全二叉树2.特点:(最大堆)堆中某个节点的值总是不大于其父节点的值3.数组存储二叉堆parent(i)=(i-1)/2left child(i)=2*i+1right child(i)=2*i+24.二叉堆实现功能(1)add(2)extractMax取出最大元素(3)replace 取出最大元素后,放入一个新元素,算法复杂度为O(nl...原创 2018-12-20 08:15:30 · 149 阅读 · 0 评论