HDUOJ-2089 不要62
树的概念

二叉树的概念
每个节点最多有2个子节点。
满二叉树
所有的叶子节点都在最后一层。
节点的总数为 2^n -1 ,n为层数。
完全二叉树
所有叶子节点在最后一层或倒数第二层。
也就是说,满二叉树,是一种特殊的完全二叉树。
前序中序后序遍历(以递归的方式)
这里的前中后指的是父节点的位置。
前序:root,左,右
中序:左,root,右
后序:左,右,root

二叉搜索树(BST)
左子树的所有节点都比root小,右子树则大。
这就相当于之前在车上玩的游戏,猜一个数,大了还是小了,直到猜中那个数。思想是类似的。
平衡二叉树(AVL树)
别名:AVL树,是两个科学家的名字缩写。
平衡指的是,左右两边的节点层级的差不大于1。是在二叉搜索树的基础上加了一个平衡的概念。
左子树的所有节点都比root小,右子树则大。
它是一种基于二分法策略提高数据查找速度的二叉树结构。
B树
B-Tree,不读作B减树
B树与二叉查找树的不同之处在于,B树是多路的,也叫做平衡多路查找树。
B树的阶:B树中所有节点的孩子节点数的最大值,也就是每个节点最多包含的孩子。K取决于磁盘页的大小。

MySQL的索引为什么要用B-Tree,因为树的查询效率高。因为树的结构是非线性的,在插入的时候,已经将数据以指定形式存储。
为什么不用BST,BST的时间复杂度是O(logN)。
磁盘IO次数等于索引树的高度,最坏情况下,磁盘IO次数等于树的最高高度。为了减少磁盘IO次数,将原本瘦高的BST,改为矮胖的B-Tree。这也是B-Tree诞生的背景。
B+树
B+树是基于B树的一个变体,有更高的查询性能。

每个父节点的元素都出现在子节点中。
B+树的中间节点没有卫星数据,同样大小的磁盘页可以存储更多的节点元素。
B+树的结构比B-树更矮胖,查询时IO次数更少。查询性能更稳定,范围查询简便。
为什么说B+树更稳定,因为每次查找都必须查找到叶子节点,而B树最坏的情况下查到叶子节点。
红黑树
为什么要有红黑树这种数据结构?
BST的一个缺陷时,当频繁插入某些数据时,会导致二叉树的高度快速增加。

红黑树的定义:
- 节点是红色或黑色
- 根节点是黑色
- 红色节点的两个子节点一定是黑色
- 从任意节点到自己的叶子节点,经过的黑色节点数都是相同的
- 每个叶子节点都是黑色的空节点(NIL)

这种规则就限制了,红黑树从根到叶子的最长路径,不会超过最短路径的2倍。
调整的方式:
- 变色
- 旋转(左旋转、右旋转)
HDUOJ-2089 不要62的更多相关文章
- Hdu 2089 不要62 (数位dp入门题目)
题目链接: Hdu 2089 不要62 题目描述: 给一个区间 [L, R] ,问区间内不含有4和62的数字有多少个? 解题思路: 以前也做过这个题目,但是空间复杂度是n.如果数据范围太大就GG了.今 ...
- hdu 2089 不要62(初学数位DP)
http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 给定 m,.n; 求车牌号 m~n之间 有多少数字 不含 4或62 ,8652是可以的 . ...
- 数位DP HDU - 2089 不要62
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- HDU 2089 - 不要62 - [数位DP][入门题]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...
- HDU 2089 不要62(数位dp模板题)
http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求区间内不包含4和连续62的数的个数. 思路: 简单的数位dp模板题.给大家推荐一个好的讲解博客.h ...
- [hdu 2089] 不要62 数位dp|dfs 入门
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求[n, m]区间内不含4和62的数字个数. 这题有两种思路,直接数位dp和dfs 数位d ...
- HDU 2089 不要62:数位dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 问你在区间[n,m]中,有多少个数字不含"4"且不含"62 ...
- HDU 2089 不要62 数位DP模板题
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 参考博客:https://www.cnblogs.com/HDUjackyan/p/914215 ...
- hdu 2089 不要62【数位dp】
HDU 2089 求给定区间内不含62和4的数的个数. 数位dp入门.从这里我清楚了一些数位dp的用法.比如limit是判断是否达到上界,而且需要判断(!limit)..比如若题目要求不含11的个数, ...
- HDOJ 2089 不要62
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- c语言宏开关 使用
/* * 宏的写法,宏的作用域,当前位置开始到大括号结束,如果没有大括号,到文件结尾. */ #include <stdio.h> //#define HELLO int main(int ...
- UE4动画及相关物理的更新顺序图
- sqoop错误集锦1
1.当时初学Sqoop的时候,mysql导入到hdfs导入命令执行以后,在hdfs上面没有找到对应的数据,今天根据这个bug,顺便解决这个问题吧,之前写的http://www.cnblogs.com/ ...
- 疑难杂症:Java中Scanner连续获取int和String型发生错误.
使用Scanner类获取输入,连续获取int类型和String类型数据时候,发生错误. Scanner sc = new Scanner(System.in); System.out.println( ...
- 05 详解C# 迭代器
迭代器模式是设计模式中行为模式(behavioral pattern)的一个例子,他是一种简化对象间通讯的模式,也是一种非常容易理解和使用的模式. 简单来说,迭代器模式使得你能够获取到序列中的所有元素 ...
- 代码覆盖率 EclEmma
1. EclEmma的介绍 EclEmma是一个开源的软件测试工具,可以在编码过程中查看代码调用情况.也可以检测单覆盖率. 2. Eclipse下EclEmma安装 1. 选择Help->Ecl ...
- Azure Sphere–“Object reference not set to an instance of an object” 解决办法
在开发Azure Sphere应用时,如果出现项目无法编译,出现“Object reference not set to an instance of an object”时,必须从下面两个方面进行检 ...
- Ubuntu 16.04下Samba服务器搭建和配置(配截图)
一.相关介绍 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和 ...
- Android NDK学习(一):目录结构解析
我们配置好NDK环境后,基本可以看到其目录结构如下图: 下面我们来分析一下NDK根目录的结构: ndk-build:该Shell脚本是Android NDK构建系统的起始点,一般在项目中仅仅执行这一个 ...
- Javascript高级编程学习笔记(33)—— 客户端检测(2)怪癖检测
怪癖检测 和能力检测类似,但其目标不同 能力检测的目的是判断浏览器支不支持某种能力 而怪癖检测的目的是判断浏览器是否存在某些缺陷 这种时候需要我们执行一段代码来判断浏览器是否有这样的缺陷 或者说是怪癖 ...