![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
离殇丶
开始自己的前端工作生涯,冲冲冲!
展开
-
二叉树基本概念
1. 什么是二叉树 一棵二叉树是有限个节点的集合,其中每个节点至多只有2个子节点。 二叉树可以是空树,可以只有一个根节点,可以是一个根节点加一个子节点组成的树。2. 二叉树与普通树的区别 ①子节点的限制:一般树对节点的子节点个数没有限制,而二叉树中每个节点至多只能有2个子节点。 ②子节点的区分:一般树不对节点的子节点进行区分,而二叉树将节点的子节点分为左孩子(left)和右...原创 2019-02-07 18:54:42 · 1352 阅读 · 0 评论 -
二叉树(BinaryTree)的Java详细实现
关于二叉树的基本概念:二叉树基本概念二叉树实现的方法: * isEmpty():判断树是否为空。 * clear():清空二叉树。 * add(BTNode, Type):向指定节点添加指定的孩子。 * height():计算二叉树的高度。 * size():计算二叉树的大小。 * findNode():查找包含指定数据的节点是否存在。 * findParent():查找包含指...原创 2019-02-07 19:06:20 · 1751 阅读 · 0 评论 -
顺序表(SeqList) Java实现
实现的操作包括:向顺序表末尾添加数据 ( addData( Data)); 向顺序表指定位置添加数据( insertDataByLoc( Location)); 删除顺序表中指定的数据( deleteDataByData( Data)); 删除顺序表中指定位置的数据( deleteDataByLoc( Location)); 查找指定位置的数据( findDataByLoc( Loca...原创 2019-01-30 18:43:26 · 2549 阅读 · 0 评论 -
链表实现系列(一)——简单链表Java实现
简单链表的原理在这里就不赘述了,推荐一篇比较不错的博客:链表原理需要实现的操作包括:在头节点之前插入节点; 在尾节点之后插入节点; 删除包含指定数据的节点; 删除尾节点; 查找包含指定数据的节点; 获取链表的长度;辅助操作包括:清空链表; 判断链表是否为空。下面是简单链表的实现/** * 注意:该链表实现不适合用于保存有重复元素的集合 */public c...原创 2019-01-30 18:54:37 · 185 阅读 · 0 评论 -
链表实现系列(二)——双向链表Java实现
双向链表原理见博客:数据结构 | 双向链表简单实现及图示(注:我采用的是范式实现,如需实现具体链表,只需将Type改为具体类型即可。)实现的操作包括:在头节点之前插入节点; 在尾节点之后插入节点; 删除包含指定数据的节点; 删除尾节点; 查找包含指定数据的节点; 获取链表的长度;辅助操作包括:清空链表; 判断链表是否为空。下面是双向链表节点的代码(DoubleNod...原创 2019-01-30 19:05:57 · 249 阅读 · 0 评论 -
队列实现系列(一)——队列的数组实现(Java版)
队列的原理见博客:队列(queue)原理使用数组来实现队列时,如果用一般的方式实现,还是比较简单的。一般队列和循环队列的实现,只是在个别地方会有不同,我在代码里已经注释出,根据自己需要修改即可。实现的操作:入队 出队 获取队首元素 获取队列长度辅助操作:判断队列是否为空; 判断队列是否满; 清空队列。下面是数组循环队列的实现代码(ArrayQueue)/** ...原创 2019-01-30 19:41:33 · 657 阅读 · 0 评论 -
队列实现系列(二)——队列的链表实现(Java版)
不多哔哔,直接上代码,多于的话请看队列实现系列(一)——队列的数组实现(Java版) 链表实现队列时,不需要考虑ElementOutOfBoundary问题,因此不需要做成循环队列。Before:这里实现时,使用的链表不是Java自带的链表,是我自己写的链表,代码见:链表实现系列(一)——简单链表Java实现下面是链式队列实现代码(LinkedListQueue)/**...原创 2019-01-30 20:08:57 · 234 阅读 · 0 评论 -
栈(Stack)的Java实现
1.什么是栈 栈是线性表的一种特殊表现形式,与队列的“先进先出”原则不同,栈的处理原则是“后进先出(Last in First out, LIFO)”。 过程理解:①向只有一个门的仓库存取货物的过程(后入库的货物必须先取出);②叠罗汉的过程(最后叠上的罗汉必须先取下)。2.栈的基本操作 入栈(push):将数据保存到栈顶。入栈时,让栈顶索引移动到栈顶元素的位置即可。 出栈(...原创 2019-01-30 20:18:20 · 604 阅读 · 0 评论 -
中序线索二叉树(ThreadBinaryTree)——基本概念及Java实现
关于二叉树的基本概念,见blog:二叉树基本概念1. 为什么要使用线索二叉树 普通二叉树有很多浪费的空间,比如叶节点的左右孩子的引用都是空的。我们可以利用起这些浪费的空间,来帮助我们实现中序遍历。我们使引用按顺序遍历后继节点,这个引用就称为线索(thread)。2. 线索二叉树的数据结构 为了区分左右孩子和前后线索,我们需要为左右孩子加一个布尔值作为标记。 leftC...原创 2019-02-26 12:49:09 · 685 阅读 · 0 评论