树(基础+提高)
文章平均质量分 72
神明 .
这个作者很懒,什么都没留下…
展开
-
AVL树模板
#include<iostream>using namespace std;int n;struct tree{ int da; tree *le,*ri; int height;};void newtree(tree* &rt,int a){ rt=new tree(); rt->da=a; rt->height=0;//注意这里是0,不是...原创 2019-12-09 15:20:53 · 174 阅读 · 0 评论 -
RMQ(查询区间最大值或最小值)详解
RMQ问题:查询区间最大值或者最小值这里用ST表处理ST表(动态规划的思想)设f [i][st],i为元素起始下标,st为从i开始,长度为2^st的最大值1.预处理 f[i][0]为从i开始,长度为2^0范围的最大值for(int i=1;i<=n;i++){ f[i][0]=a[i]; }2.f[i][0] [i,i] ...原创 2019-12-09 15:20:20 · 1420 阅读 · 0 评论 -
二叉树的各种题型详解
根据先序和中序求后序遍历后续遍历就是先遍历左子树,然后是右子树,最后是根由先序和中序,可以知道根和左右子树的位置,对其按照后续遍历的规则遍历即可每次用k++,就可以获取先序的根节点,对于先序来说,其实一直都是根节点获取rt后,对中序切割,便可以得到左子树和右子树,对左右子树继续遍历当 rt=f 时,说明没有左子树,当 rt =r 时,说明没有右子树,输出此节点即可rt&l...原创 2019-12-08 21:57:41 · 442 阅读 · 1 评论 -
pat甲级——1043 Is It a Binary Search Tree (25分)
题意:给出一组数,判断是否为二叉搜索树的前序遍历,或者为二叉搜索树的镜面前序遍历题解:法一:直接建树,然后前序遍历,并在遍历过程判断是否与题目给出的数相等 如果不相等,可以发现镜面的前序遍历为根右左,按照这个顺序再遍历一次即可 解法麻烦一点但好理解 #include<bits/stdc++.h>using n...原创 2019-12-06 19:58:28 · 110 阅读 · 0 评论 -
树状数组+题目详解
树状数组直接搜狗百科就行(不行再去B站)巨佬写的#include<iostream>using namespace std;const int maxn=1e5;int f[maxn];int n;int lowbit(int x){ return x&(-x);}void update(int i,int x){//将i位置+x while(i&...原创 2019-09-29 10:37:58 · 283 阅读 · 0 评论