数据结构
文章平均质量分 91
mayifan_blog
湖南大学,电气自动化,自学互联网
展开
-
数据结构之树的知识点梳理和分析
树的概念我们先来介绍一下树的基本组成结构,树由一个个带有数据和指针的节点组成,指针使得不同节点之间获得了联系,所有的节点都源自于终端节点(根节点),它可以指向若干子节点,子节点又会指向更多子节点,最终指向终端节点(叶节点),终端节点没有子节点。一个节点是它指向的子节点的直接前驱,子节点是它的直接后继。一、接下来我们介绍一下节点之间的关系:1、双亲节点(双亲节点是一个节点):一个节点是它的子...原创 2018-12-04 17:04:39 · 1699 阅读 · 0 评论 -
红黑树的基本概念及java实现
红黑树的性质红黑树和平衡二叉树类似,最大的区别是红黑树为节点赋予了黑色和红色两种属性。红黑树的节点只有两种颜色,红色和黑色。根节点为黑色。叶子节点为黑色,值为NULL。没有两个连续的红色节点。从一个节点到该节点的子孙节点的所有路径包含相同数目的黑色节点。平衡树的旋转红黑树和AVL树的平衡条件类似,当插入节点之后,可能会导致树的某节点左右子树高度差大于1。这时候我们需要左旋转或者...原创 2018-12-05 16:04:51 · 306 阅读 · 0 评论 -
深入理解HashMap及底层实现
**概述:**HashMap是我们常用的一种集合类,数据以键值对的形式存储。我们可以在HashMap中存储指定的key,value键值对;也可以根据key值从HashMap中取出相应的value值;也可以通过keySet方法返回key视图进行迭代。以上是基于HashMap的常见应用,但是光会使用是远远不够的,接下来将我们深入剖析HashMap的实现原理并手写实现一个简单的HashMap。Hash...原创 2018-12-26 17:21:19 · 327 阅读 · 0 评论 -
支持泛型的链表(实现链表反转方法)
链表的概念链表是由一系列非连续节点组成的线性表,链表的组成单元是节点,每个节点都有数据域和引用域,节点之间就是通过引用域联系起来,链表的第一个节点是头结点,最后一个节点是尾节点,我们可以通过头结点逐个找到它之后的节点,一个节点总是指向下一个节点,故链表是线性的。内存空间包括堆和栈,链表在它们之中的存储方式是:头结点的引用放在栈中,链表的其余部分都放在堆中(我们可以这样理解堆和栈,栈是一种线性的存...原创 2018-12-16 19:05:10 · 257 阅读 · 0 评论 -
哈夫曼树的搭建与哈夫曼编码
什么是哈夫曼树在介绍哈夫曼树前,我们先介绍二叉树的基本概念,以便大家更好地理解哈夫曼树:路径:两个节点之间分支的连线即两个节点之间的路径。路径长:两个节点之间路径所包含分支的和。深度:根节点的深度为0,其子节点的深度为1,往下逐一递推。子节点数:和普通的树不同,二叉树从根节点出发,每个节点最多只能有两个子节点。满二叉树:除了叶子结点,每个节点都有两个子节点。哈夫曼树是一种最优的二叉...原创 2018-12-21 23:38:08 · 506 阅读 · 0 评论 -
ArrayList的底层原理及手写实现
ArrayList的底层原理ArrayList的底层是一个动态的数组,数组的长度可以根据实际存储元素数量的增加而动态增长。ArrayList的扩容机制:ArrayList的底层数组长度可以通过有参的构造方法给定,也可以通过无参的构造方法默认给定,默认长度是10,存储的元素会从第一个存储单元开始逐个存储,一旦存满,就会触发扩容机制。当需要扩容时,会先申明一个新的数组,它的长度是原数组长度的1.5...原创 2019-01-04 14:55:19 · 633 阅读 · 0 评论