树(复习用)

1、定义与基本术语

树的结构定义

其他表示树的方法:

其他术语:

2、二叉树

1)定义:

性质:

2)满二叉树与完全二叉树

3、存储结构

4、遍历二叉树

伪代码

中序遍历非递归算法

前序遍历构建二叉树

5、线索二叉树

中序遍历线索二叉树

后序线索二叉树

中序遍历二叉线索树 非递归算法

6、树和森林

1)储存结构

i)双亲表示法

2)森林与二叉树的转换

3)树的遍历

先根遍历: ABCDE          后根遍历:  BDCEA

遍历森林:

      先序遍历: ABCDEFGHIJ       中序遍历:   BCDAFEHJIG

7、huffman

霍夫曼编码:

时间: 2024-08-09 22:12:28

树(复习用)的相关文章

伸展树复习 (bzoj 1251 序列终结者)

本来要看LCT的,确发现自己弱得连splay都忘记了,复习一发,顺便重写一发 关键点: 1. 伸展树为左小右大的二叉树,所以旋转操作不会影响树的性质 2. 区间操作为: int u = select(L - 1), v = select(R + 1); splay(u, 0); splay(v, u); //通过旋转操作把询问的区间聚集到根的右子树的左子树下 因为伸展树为左小右大的二叉树,旋转操作后的所以对于闭区间[L, R]之间的所有元素都聚集在根的右子树的左子树下 因为闭区间[L, R],

主席树复习

T1 [CQOI2015]任务查询系统 n个任务,每个有运行的时间段和优先级,询问某一时刻,优先级最小的个任务的优先级之和 初做:  2017.2.4   http://www.cnblogs.com/TheRoadToTheGold/p/6366165.html 好像是做了一晚上来 现在:2017.3.27   14:17——15:56 用了接近2个小时做了一道以前做过的题,还是弱啊~~~~(>_<)~~~~ difference: 主席树维护的东西不同,以前直接存储优先级之和,现在存储的是

线段树复习

#1080 : 更为复杂的买卖房屋姿势 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho都是游戏迷,"模拟都市"是他们非常喜欢的一个游戏,在这个游戏里面他们可以化身上帝模式,买卖房产. 在这个游戏里,会不断的发生如下两种事件:一种是房屋自发的涨价或者降价,而另一种是政府有关部门针对房价的硬性调控.房价的变化自然影响到小Hi和小Ho的决策,所以他们希望能够知道任意时刻某个街道中所有房屋的房价总和是多少--但是很不幸的,游戏本身并不提供这样的计算

B-树 B+树复习总结

一.B-树的定义 一棵m阶的B-树或为空树,或为具有以下特性的m叉树 1.树中每个结点至多有m棵子树 (m-1个关键字) 2.根结点至少有两棵子树 (至少有一个关键字) 3.除根节点的分支结点至少有floor(m/2)棵子树 (floor(m/2)个关键字) 4.所有的非终端结点至多有 m-1个关键字 二.B-树的查找   查找k B-树的查找与二叉有序树的查找类似 先在根结点查找关键字k,若找到则ok,若只有ki<k<k(i=1),则沿着pi的分支往下查找子树 根据B-树的定义: 第一层至少

线段树复习打卡——1318: 借教室

http://61.139.95.227:82/problem.php?id=1318 线段树区间修改模版 #include <bits/stdc++.h> #define read read() #define up(i,l,r) for(int i = (l);i <= (r);i++) #define down(i,l,r) for(int i = (l);i >= (r);i--) #define ll long long #define lson l,mid,rt<

数据结构 - 树 复习(不详细)

数据结构 - 树 首先回忆一下树的术语 节点的度:一个节点含有的子树的个数称为该节点的树 树的度:一棵树中,最大的节点的度称为树的度 节点的层次:从根开始定义,根为第一层(有时候定义为第0层) 高度:对于任意节点n,n的高度为n到一片树叶的最长路径的长度,所有树叶的高度为0 树的遍历 前序遍历:先访问根,然后访问左右子树 中序遍历:先访问左子树,然后访问根,最后访问右子树 后序遍历:先访问子树,然后访问根 层序遍历:先访问离根节点最近的节点,按层遍历 #include<iostream> us

伸展树复习

T1 郁闷的出纳员 一个数据结构,支持单点插入.删除几个不一定连续的点.查询k值操作 初做:2017.2.18   time:1268ms    memory:3MB http://www.cnblogs.com/TheRoadToTheGold/p/6412790.html 现在:2017.3.28   time:570ms   memory:3MB 初做时直接套模板,删除分5种情况, 本题实际只需3种情况 这一次的查询用递归写的 int query(int now,int k) { int

hdu 1166 线段树单点更新

等线段树复习完再做个总结 1101 2 3 4 5 6 7 8 9 10Query 1 3Add 3 6Query 2 7Sub 10 2Add 6 3Query 3 10End Case 1:63359 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #include<cmath> 6 #include<queue>

【区间合并线段树】BZOJ1593-安排住宿

[题目大意] 查询最左端的连续长度区间:或批量修改一些区间.[思路] 区间合并线段树……复习一下.POJ上有一样的题目,我居然还借用了别人的权限号去做BZOJ,简直愚昧到没朋友[笑cry] 处理方法以前的博文里有,这里有不赘述了. 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 #include<cstdlib> 6 using

POJ&ndash;2104 K-th Number

主席树. 主席树复习,这道题是主席树的经典入门了吧.. 无修改区间第k大. #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn = 200000 + 10; const int maxm = 5000000 + 10; /* void build(int &x,int L,int R) { if(!x) x=++vid; if(L==