二叉排序树 二叉排序树在线性表中,我们可以通过数组和链表对数据进行查询、添加、删除。 在数组中查询的时间复杂度为O(1) , 添加删除的操作时间复杂度为O(n) 在链表中查询的时间复杂度为O(n) ,添加删除的操作时间复杂度为O(1) 【且当前已找到需要删除的数据】 因此我们通过二叉树来存储数据,以及与数据的一些处理。 二叉排序树的定义二叉排序树(BST),又称二叉查找树、二叉搜索树。 对于二叉排序树 2020-01-08 #Java #数据结构与算法
线索二叉树和赫夫曼树 树线索二叉树问题引入:在该树中,1,2,3结点的左右指针并没有全部被利用。我们希望充分利用各个结点的左右指针,让各个结点指向自己的前后结点。 解决方法:线索二叉树 介绍线索二叉树 n个结点的二叉链表含有n+1个空指针域。利用二叉链表中的空指针域,存放指向某种遍历次序下的前驱和后继结点的指针。 线索二叉树可分成前序线索二叉树,中序线索二叉树,后序线索二叉树。 如何实现线索二叉树 我们中 2020-01-08 #Java #数据结构与算法
递归 递归算法思想 递归(Recurrence)是计算机、数学、运筹等领域经常使用的最强大的解决问题的方法之一。他用一种简单的方式来解决那些用其他方法解起来可能很复杂的问题。 递归的基本思想是把一个问题划分为一个或多个规模更小的子问题。,然后用相同的方法解规模更小的子问题。注意,这里的子问题应该与原问题保持相同类型。 递归算法的设计: 1、找到问题的初始条件(递归入口),即当问 2020-01-08 #Java #数据结构与算法
链表的常见算法题 链表的常见算法题:1234567解决链表的算法题通常有两种方法: 1、 借助容器(栈、数组、哈希表...) 2、 快慢指针在要求空间复杂度的情况下,我们会使用快慢指针 123451、 - 输入链表头节点,奇数长度返回中点,偶数长度返回上终点 - 输入链表头节点,奇数长度返回中点,偶数长度返回下终点 - 输入链表头节点,奇数长度返回中点前一个,偶数长度返回上终点 - 输入链表头节点,奇数长 2020-01-08 #Java #数据结构与算法
队列 1、队列的定义及基本概念“队列”(Queue)这个单词时英国人说的 “排”(line)(一种等待服务的方式),在生活中,队列在我们日常生活中经常碰到,例如,排队买东西。 在计算机科学中,队列是一种数据结构,是一种特殊的线性表。和栈类似。但相差很大。 队的操作是在两端进行,其中一端只能进行插入,该端称为队列的队尾,而另一端只能进行删除,该端称为队列的队首。队列的运算规则时FIFO(First 2020-01-08 #Java #数据结构与算法
两个队列实现栈 两个队列实现栈栈和队列相似,都是特殊的线性表。 但在数据的运算方法与队列不同,栈为先进后出。队列是先进先出。 算法思路: 先初始化栈:初始化两个循环队列。先存入数据:按照存入队列的方式将数据存入栈中。现在取出一个数据:我们将Queue1的数据依次存入Queue2中,直到Queue1只剩一个数据,然后将最后一个数据出队列。再加入数据:在已有数据的队列中添加数据。取出数据:同样,将Queue2的数 2020-01-06 #Java #数据结构与算法
栈的实现 栈的特点栈(Stack)又称堆栈,是一种基于后进先出(LOFO)策略的集合类型。是限制在表的一端进行插入删除运算的线性表。栈可以用来在函数调用时存储断点,做递归时要用到栈。 通常将能够进行插入和删除运算的这一端称为栈顶,另一端称为栈底。当表中没有元素时称为空栈。 栈的常用运算: Pop():弹出操作,每次删除操作。 Push():压入操作,将数据插进栈中。 isFull():判断当前栈是否是 2020-01-06 #Java #数据结构与算法
栈的使用 栈的应用括号匹配问题 问题: 给出一个字符串,里面有三类括号:“(,)”、 “[,]”、 ”{,}” 括号成队出现并且嵌套正确,返回true ;否则返回false; 示例: input:“({()})” output: true input:”{(]}” output: false 算法: 依次扫描字符串。 1、如果出现左括号【 ‘(’、‘[’ 、‘{’ 】时。进栈。 2、如果出现右括号 2020-01-06 #Java #数据结构与算法
树的常见算法题1 求中序遍历后继节点12345678910class NextNode{ int value; NextNode left; NextNode right; NextNode parent; public NextNode(int value) { this.value = value; }} 12345 2020-01-06 #Java #数据结构与算法
浅拷贝和深拷贝 浅拷贝 浅拷贝会创建一个新对象,如果这个对象的属性是基本类型,那么拷贝的就是基本数据类型的值。如果这个对象的属性是引用数据类型,那么拷贝的就是对象的引用地址。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 2020-01-06 #Java