![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 83
你这家伙
这个作者很懒,什么都没留下…
展开
-
从上到下打印二叉树的三种题型
从上到下打印二叉树(一) 也就是我们所熟知的层序遍历 思路分析: 1.首先它需要返回的是一个数组,那么我们首先要做的就是new一个数组,而数组的大小需要我们遍历这棵二叉树计算出来 2. 当我们申请完数组之后,然后借助队列来完成层序遍历 3. 首先将根节点放进去,然后当队列不为空的时候,定义一个cur记录这个节点,然后每弹出一个元素,就放进数组里面 4. 然后再判断这个节点的左节点和右节点是否不为空,当不为空的时候放进队列 //首先获取这棵树有多少个节点 public int getSize(T原创 2021-08-26 11:06:49 · 205 阅读 · 0 评论 -
相关二叉树习题整理
题目描述: 给定一棵树的前序遍历 preorder 与中序遍历 inorder。请构造二叉树并返回其根节点。 示例一: Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] Output: [3,9,20,null,null,15,7] 示例 2: Input: preorder = [-1], inorder = [-1] Output: [-1] 思路分析: 首先判断数组是否为空,如果有一个为空那么就直接返回null. 遍历前序遍历的数组原创 2021-08-25 12:15:16 · 150 阅读 · 0 评论 -
掌握哈希表
首先来看一个问题? 我:在[5,1,4,7,6,5,7,1,6],在这组数据中查找某一个元素有几种方法呢? 你:①暴力可以的话,那就可以直接遍历数组嘛;②咱们也可以先把他排个序,然后在使用前面学的二分查找呀;③实在不行,我们可以将他构建成一颗二叉搜索树呀…… 我:害,你这些都可以,但是你直接遍历的话,时间复杂度就位O(n)了呀,二分查找的时间复杂度为O(logn),二叉搜索树的时间复杂度为O(log2Nlog_2 Nlog2N)了,有没有时间复杂度更低的呀,像O(1)这样的时间复杂度~ 你:我…… 我:算原创 2021-08-12 14:35:53 · 148 阅读 · 0 评论 -
不以跬步无以致千里——Day1
反转链表 题目面试描述:输入一个链表,反转链表后,输出新链表的表头。 示例1 输入: {1,2,3} 返回值: {3,2,1} 解题分析: 1.定义一个前驱节点pre,初始值为null,在定义一个cur指向head 2.pre为cur的前驱节点,反转也就是让cur的下一个指向pre 3.但是如果cur的next直接指向pre的话,那么cur后面的链表就无法找到了 4.所以此时还需要一个临时节点tmp来每次保存cur的next的值 5.然后每次当cur的next指向pre之后,之后就让pre=cur,cur原创 2021-08-09 23:55:55 · 60 阅读 · 0 评论 -
优先级队列
前面我们提到过简单的Java集合框架 1.概念 队列是一种先进先出的(FIFO)的数据结构,但是在某些特殊情况下啊,操作的数据可能带有优先级,一般出队列时,可能需要优先级高的元素先出队列,所有,在改情况下的时候,使用队列肯定是不合适的。(比如:当你在刷抖音的时候,如果别人给你打电话进来的时候,那么系统应该有限处理打进来的电话。)这种情况下的时候,我们需要依赖优先级队列来进行处理,一个是返回最高优先级对象,一个是添加新的对象。 优先级队列底层是一个堆,而堆其实就是一个顺序存储的二叉树 2.优先级队列的特性原创 2021-04-15 22:39:30 · 92 阅读 · 1 评论