
数据结构
文章平均质量分 93
姜西西_
这个作者很懒,什么都没留下…
展开
-
二叉树相关OJ题
3. 如果上述都不满足, 则判断两节点的数值是否相同, 如果不相同,返回false。1. 如果一个节点为空, 一个节点不为空, 那么说明不相同,返回false。4. 上述条件都不满足, 即两节点相同, 则递归判断左节点和右结点。2. 如果两个结点都为空, 说明此时两个节点相同, 返回true。判断两棵树是否相同, 需要两颗树同时遍历结点, 并分析结点的情况。8. 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。9. 根据一棵树的前序遍历与中序遍历构造二叉树。14. 二叉树后序非递归遍历实现。原创 2024-11-19 19:26:54 · 335 阅读 · 0 评论 -
单向链表 链表面试题
实际中链表的结构非常多样,以下情况组合起来就有8种链表结构:3. 循环或者非循环 无头单项非循环链表的实现:1.3 链表面试题 1. 删除链表中等于给定值 val 的所有节点。 链接思路:代码如下:2. 反转一个单链表。链接思路:代码:3. 给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。链接代码:4. 输入一个链表,输出该链表中倒数第k个结点。链接代码:原创 2023-12-27 13:17:05 · 907 阅读 · 1 评论 -
队列的概念及使用
在Queue接口的方法里, 我们看到有add remove element 这些是继承于Collection接口的, 而offer poll peek是接口本身的,他们的使用效果基本一致。如果使用单链表, 从队尾进, 想要找到队尾, 则需遍历一遍链表, 或需要用last指针指向队尾, 从队头出, 则需将头结点向后移动。2. 出栈, 出第二个栈的栈顶元素即可, 如果第二个栈为空, 将里面的所有元素放到第二个栈。3. 出栈时, 出不为空的队列, 出size-1个元素, 剩下的一个就是要出栈的元素。原创 2024-02-28 15:51:09 · 1067 阅读 · 0 评论 -
反射、枚举以及lambda表达式
Java的反射(reflection)机制是在。原创 2024-04-17 20:45:05 · 738 阅读 · 0 评论 -
Map Set
以前常见的搜索方式有:1.直接遍历,时间复杂度为O(N),元素如果比较多效率会非常慢2.二分查找,时间复杂度为 O(log2N),但搜索前必须要求序列是有序的上述排序比较适合静态类型的查找,即一般不会对区间进行插入和删除操作了,而现实中的查找比如:1.根据姓名查询考试成绩2.通讯录,即根据姓名查询联系方式3.不重复集合,即需要先搜索关键字是否已经在集合中可能在查找时进行一些插入和删除的操作,即动态查找,那上述两种方式就不太适合了,本节介绍的Map和Set。原创 2024-03-27 20:03:50 · 1136 阅读 · 0 评论 -
搜索树, 哈希表
发现违背了搜索树的定义!原创 2024-04-15 19:45:29 · 877 阅读 · 0 评论 -
冒泡排序 快速排序 归并排序 其他排序
书接上回..目录2.3 交换排序2.3.1冒泡排序2.3.2 快速排序快速排序的优化:快速排序非递归2.4 归并排序基本思想归并排序非递归海量数据的排序问题 排序算法时间空间复杂度和稳定性总结四. 其他非基于比较排序 (了解)基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。遍历数组, 将最大值移动到最后, 再次遍历, 将第二大值移动到倒数第二个位置, 以此类推【冒泡排序的特性总结】快速原创 2024-03-26 19:53:44 · 1103 阅读 · 0 评论 -
直接插入排序 希尔排序 选择排序 堆排序
直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用时间复杂度:O(N^2)空间复杂度:O(1)稳定性:不稳定。原创 2024-03-24 17:40:06 · 939 阅读 · 1 评论 -
优先级队列(堆)(2)
1.原创 2024-03-20 20:50:03 · 937 阅读 · 0 评论 -
优先级队列(堆)(1)
对于普通的序列{ 1,5,3,8,7,6 }, 假设要创建。原创 2024-03-13 16:49:41 · 898 阅读 · 0 评论 -
二叉树(1)
树是一种的数据结构,它是由nn>=0)个有限结点组成一个具有层次关系的集合。。它具有以下的特点:1. 有一个特殊的结点,称为根结点,根结点没有前驱结点2. 除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1T2......Tm,其中每一个集合Ti (1 <= i <= m) 又是一棵与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继3. 树是递归定义的。:一个结点含有子树的个数称为该结点的度;如上图:A的度为6。原创 2024-02-29 17:13:11 · 910 阅读 · 1 评论 -
栈的概念及应用
一种特殊的线性表,其。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO)的原则。压栈:栈的插入操作叫做进栈压栈入栈,。出栈:栈的删除操作叫做出栈。。从上图中可以看到,Stack继承了VectorVector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的。原创 2024-02-27 20:04:21 · 973 阅读 · 0 评论 -
顺序表ArrayList及应用
在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:说明】(了解)是以泛型方式实现的,使用时必须要先实例化实现了接口,表明ArrayList支持随机访问实现了Cloneable接口,表明ArrayList是可以clone的实现了接口,表明ArrayList是支持序列化的5.和Vector不同,ArrayList不是线程安全的,在单线程下可以使用,在多线程中可以选择Vector。原创 2023-12-22 17:25:06 · 875 阅读 · 1 评论 -
时间复杂度 空间复杂度 ---java
。在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。原创 2023-11-23 15:19:49 · 95 阅读 · 4 评论