![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 63
凤梨..
积极向上!!!
展开
-
详讲!!红黑树(最优二叉树)
1.每个节点不是红色就是黑色2.根节点是黑色原创 2022-08-03 16:00:17 · 434 阅读 · 1 评论 -
二叉排序树的删除
二叉排序树的删除二叉排序树的删除情况比较复杂,有以下三种情况需要考虑1)删除叶子节点 (比如:2,5,9,10)2) 删除只有一个子树的节点(比如:1)3)删除有两个子树的节点 (比如:7,3,10)分析情况一:删除叶子节点 (比如:2,5,9,10)思路删除叶子节点的基本逻辑1.找到要删除的节点targeNode2.找到删除节点的父节点parent节点3.判断targeNode节点是parent节点的左子树还是右子树4.根据上述情况进行删除左子..原创 2022-03-30 20:34:29 · 7918 阅读 · 5 评论 -
二叉树的遍历方式一共有四种
二叉树的遍历方式一共有四种其中前中后序遍历采用了递归的方式进行/** * 中序遍历 * * @param treeNode */ public void inOrder(TreeNode treeNode) { if (treeNode != null) { inOrder(treeNode.getLeftTreeNode()); System.out.print(" " + treeNode.getValue() + " ")原创 2022-03-29 22:33:26 · 162 阅读 · 0 评论 -
二叉排序树
二叉排序树 logn一、二叉排序树介绍二叉排序树:对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点要求:一个节点的左子树的值一定小于等于该节点,右子树的值一定大于该节点。是整个树有序。如何构建?链表的构建。单链表分两个部分: value next双链表树在存储的时候肯定是链式存储的方式。构建有序二叉树实现思路如果左子树不为空,那么原创 2022-03-29 17:26:49 · 2042 阅读 · 0 评论 -
树、树、树
树:目前学过的基本数据结构1.数组 链表 哈希表哈希表本身是数组加链表 达到O(1)不管存储什么数字,根据数除以数组长度的余数考虑一个链表,是O(n),短的话是O(1)能不能降低时间复杂度循环减半logn —— > 折半查找有一个有序数组进行查询可以用一个折半查找法找到中间位置:首尾相加/2数组必须有序才能达到logn链表是可以达到logn时间复杂度树也是链式存储,特殊的树可以达到logn先学一个,有序二叉树...原创 2022-03-28 22:33:51 · 62 阅读 · 0 评论 -
算法题:实现一个栈,要求实现该栈的出栈,入栈。返回最小值的时间复杂度为O(1)
实现一个栈,要求实现该栈的出栈,入栈。返回最小值的时间复杂度为O(1)解题思路:两个栈,min是存储最小值的。有这样一组数据第一个方法:push方法,往mun里面入栈,5入栈,判断mun有没有数据同时往两个栈里放数据7入栈,min里数据比mun里数据小就不用插入数据下一个数据4,判断有数据 4比5小,放入min4放入min同理插入2之后push完方法。有 pop方法:出栈判断栈顶两个是否相等,相等出栈。不相等左边出栈...原创 2022-03-19 11:37:17 · 379 阅读 · 0 评论 -
栈和队列2
以上次队列为例泛型:泛指一切数据类型需要float,就创建一个float类型的数组,需要char就创建char类型数组。如果我们只定义了int类型的数据,所能存储下来的数据类型有限。所以想到了泛型。在类后面打上"<>",里面可以写任意东西。比如类型都为王public class Queue<王> { private 王[] arr; private int f =0; //放入 private int r =0; //原创 2022-03-19 11:00:03 · 394 阅读 · 0 评论 -
栈:先进后出
栈:先进后出栈是用链表或数组实现先进后出的一个逻辑结构比如一些栈只能存放整型的数据,如何实现先进后出?先让游标f指向第一个位置,5插入完成之后f加加等。出栈怎么办?比如让4出栈,直接f--f--;arr[f]入栈顺序:arr[f] = 值;f++;用代码实现:对一个栈内存,队列来说,存储形式有两种:顺序性存储(链表),非顺序性存储链式存储链表、数组、图等都是逻辑结构。实践就是物理结构(地址连不连续)。pulic ...原创 2022-03-18 15:51:04 · 2864 阅读 · 0 评论 -
了解——堆排序
堆排序完全二叉树:要求数据必须从上到下,从左到右依次进行平铺满。特殊的二叉树。1.堆:大顶堆 小顶堆在完全二叉树基础之上,每个节点的值都大于或等于其左右孩子的值。在完全二叉树基础之上,每个节点的值都小于或等于其左右孩子的值。堆排序过程1构建大顶堆2维护大顶堆3想要3的子节点,详细讲述:定义两个标:parent Child首先入parent一个一个去找,父节点和孩子当中最大值进行对比,大的值存在父节点当中,小的..原创 2022-03-16 22:48:25 · 329 阅读 · 0 评论 -
了解——基数排序
基数排序从个位开始排序,然后依次十位,百位等。从个位从小到大排序......有一些数据需要十个桶存放这些数据第一轮排序先按照个位进行排序排完序取出:发现还是无序数组,然后进行十位排序下一步排百位依次放进去就排好序了。1.看图写逻辑 2.纠正细节桶怎么表示?——> 二维数组先把二维数组画出来。代码表示:int[][] bucket = new int[10][arr.length]; ...原创 2022-03-15 15:42:11 · 64 阅读 · 0 评论 -
让我们了解递归
递归是什么?举例来解释原创 2022-01-19 20:30:16 · 326 阅读 · 0 评论