![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
哦啦哦啦!
这个作者很懒,什么都没留下…
展开
-
已知中序遍历和层序遍历重构树
问题描述:已知一棵树的层序遍历结果是1 2 3 4 5 6 7;中序遍历结果是6 4 2 5 7 1 3,那么如何重构这颗树呢?求解思路:层序遍历和前中后遍历不同的一点在于左右子树的结点是混合出现的因此在递归建树的过程中关键的一点就是将左右子树分割出来算法设计首先需要知道层次排序第一个出现的是根结点然后在中序序列中找根结点的位置,记录到k中,那么其左边的结点属于左子树,右边的结点属于右子树接下来遍历levelorder数组,对于每个数字,判断其是否在左子树中,即(是否在inorder原创 2020-05-22 17:15:07 · 976 阅读 · 0 评论 -
C++中AVL树构建详解
AVL树的定义平衡二叉树由前苏联两位数学家GM.Adelse-Velskil、E.M.Landis提出,因此一般也称作AVL树。AVL树从本质上说仍是一颗二叉搜索树,只是在其的基础上添加了平衡要求,使得树的高度在每次插入元素后仍可以保持O(logn)的级别。所谓的平衡操作指的是对于AVL树的任意结点来说,其左子树和右子树的高度差的绝对值不超过1,其中左子树的高度减去右子树的高度称为该结点的平衡因子。例如,对于下面的三棵树,根结点的平衡因子分别是 -1、2、-2基本操作函数1.结构体因为需要对原创 2020-05-13 20:35:58 · 1189 阅读 · 1 评论 -
PAT1110 Complete Binary Tree完全二叉树
先来看一下完全二叉树的定义:除了最下面一层之外,其余层的结点个数都达到了当层能达到的最大结点数,且最下面的只从左到右连续存在若干结点,而这些连续结点右边的结点全部不存在。例如:下图中A是一颗完全二叉树,B不是完全二叉树转换到这道题,解题思路是:从根结点开始进行bfs,当bfs队列的队头元素为-1时跳出循环,根据完全二叉树的性质,如果这时已经访问完所有的树结点,那么这棵树就是一颗完全二...原创 2020-05-06 21:10:29 · 192 阅读 · 0 评论 -
DFS解决添加运算符使等式成立问题
思路:因为只可以两两数之间填运算符,所以最多只有八个位置可以填,填充情况分别是:不填、+、-所以可以用DFS填充好八个位置,然后判断当前填充方案的运算结果是否等于x,复杂度为3的8次方但是这题的计算过程很复杂,我采用的方法是先将运算符填充进去构成一个完整的计算表达式,然后将这个字符串求解求解运算表达式的思路是:将表达式中的数字放入num数组,运算符放入op数组,这里num中的元素个数为...原创 2020-05-04 20:28:17 · 596 阅读 · 0 评论 -
DFS求解排列和组合问题
全排列问题题目描述:把1~N这N个整数按不同的顺序摆放,输出所有可能的结果(按字典序从小到大)思路:1.用数组v存放当前的排列;数组hashtable【i】表示i是否已经被使用(即已经在数组中)2.递归边界为当index为n时表示已经填充好一个完整的排列,输出当前排列,然后returnint n;int v[n+5];int hashtable[n+5];//使用前需要全部赋初值0...原创 2020-04-26 22:41:56 · 568 阅读 · 0 评论 -
最大公约数(gcd)和最小公倍数(lcm)求解
最大公约数正整数a与b的最大公约数是指a与b的所有公约数中最大的那个公约数,例如4和6的最大公约数为2;3和9的最大公约数为3。一般用 gcd(a, b)来表示a和b的最大公约数,而求解最大公约数常用欧几里得算法(即辗转相除法)。欧几里得算法基于下面这个定理:设a、b均为正整数,则gcd(a, b)= gcd(b, a %b)。由上面这个定理可以发现,如果a<b,那么定理的结果就是...原创 2020-04-21 21:23:35 · 1953 阅读 · 0 评论 -
利用BST性质建立二叉树 C++实现
特殊二叉树的建立(二叉搜索树)首先我们先认识一下二叉搜索树(BST),即任意节点的左节点肯定比该节点小,右节点比该节点大。然后当你中序遍历这棵树的时候,你会惊讶的发现遍历后得到的data是从小到大排序的。给出如下一颗二叉搜索树:中序遍历结果就是1 4 5 6 8 9 13因此对于一个二叉搜索树的建立,只需要判断当前结点的data值和要插入的data值,如果data<root - &...原创 2019-11-28 22:31:46 · 417 阅读 · 0 评论 -
字符串next值计算方法 附前缀后缀解释
原题:大一学的数据结构全忘了,做题看到的,整个人都懵了。。网上看了很多的解析,好多博主抛出一个概念,然后没有解析,对我这种弱渣来说更加懵逼了~下面是我总结的一个简单的计算方法首先介绍2个概念,字符串的前缀和后缀(这里的前缀是不包括最后一个字符的子串,后缀是不包含第一个字符的子串)。拿题目中的字符串a=’‘babab’'举例,首先第一位0,第二位1。这个是固定的。第三位,字符串是“ba...原创 2019-11-17 15:28:12 · 3362 阅读 · 2 评论