树的概念

二叉树的概念

每个节点最多有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的更多相关文章

  1. Hdu 2089 不要62 (数位dp入门题目)

    题目链接: Hdu 2089 不要62 题目描述: 给一个区间 [L, R] ,问区间内不含有4和62的数字有多少个? 解题思路: 以前也做过这个题目,但是空间复杂度是n.如果数据范围太大就GG了.今 ...

  2. hdu 2089 不要62(初学数位DP)

    http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 给定 m,.n; 求车牌号 m~n之间 有多少数字 不含 4或62     ,8652是可以的 . ...

  3. 数位DP HDU - 2089 不要62

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  4. HDU 2089 - 不要62 - [数位DP][入门题]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 Time Limit: 1000/1000 MS (Java/Others) Memory Li ...

  5. HDU 2089 不要62(数位dp模板题)

    http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求区间内不包含4和连续62的数的个数. 思路: 简单的数位dp模板题.给大家推荐一个好的讲解博客.h ...

  6. [hdu 2089] 不要62 数位dp|dfs 入门

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意:求[n, m]区间内不含4和62的数字个数. 这题有两种思路,直接数位dp和dfs 数位d ...

  7. HDU 2089 不要62:数位dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 题意: 问你在区间[n,m]中,有多少个数字不含"4"且不含"62 ...

  8. HDU 2089 不要62 数位DP模板题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2089 参考博客:https://www.cnblogs.com/HDUjackyan/p/914215 ...

  9. hdu 2089 不要62【数位dp】

    HDU 2089 求给定区间内不含62和4的数的个数. 数位dp入门.从这里我清楚了一些数位dp的用法.比如limit是判断是否达到上界,而且需要判断(!limit)..比如若题目要求不含11的个数, ...

  10. HDOJ 2089 不要62

    不要62 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

随机推荐

  1. log4j的添加顺序

    1.log4j的架包 <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api&l ...

  2. [转].NET Core、Xamarin、.NET Standard和.NET Framework四者之间的区别

    转至:https://segmentfault.com/a/1190000011539920 前段时日微软(Microsoft)正式发布了.NET Core 2.0,在很多开发社区中反响不错.但还是有 ...

  3. 关于http与https的注意点

    背景:在一次项目生产上线中遇到地址在IOS版本的app中打不开或者接口请求不返回的情况,在安卓机和PC上表现正常,经排查,问题出在http请求上,原因详解 在早期PC上和安卓手机上比较不严格,在htt ...

  4. 11个炫酷的Linux终端命令大全

    我已经用了十年的Linux了,通过今天这篇文章我将向大家展示一系列的命令.工具和技巧,我希望一开始就有人告诉我这些,而不是曾在我成长道路上绊住我. 1.命令行日常系快捷键 如下的快捷方式非常有用,能够 ...

  5. windows mysql zip 安装

    https://www.cnblogs.com/iathanasy/p/8461429.html

  6. HDFS-HA高可用

    HDFS-HA工作机制 通过双NameNode消除单点故障 HDFS-HA工作要点 1.元数据管理方式需要改变 内存中各自保存一份元数据: Edits日志只有Active状态的NameNode节点可以 ...

  7. Project Structure详解

    Project Structure “ 项目结构”对话框允许您管理项目和IDE级别的元素,例如Modules,Facets,Libraries, Artifacts和SDK. 在大多数情况下,左边部分 ...

  8. SQL Server 自动循环归档分区数据脚本

    标签:SQL SERVER/MSSQL SERVER/数据库/DBA/表分区 概述 在很多业务场景下我们需要对一些记录量比较大的表进行分区,同时为了保证性能需要将一些旧的数据进行归档.在分区表很多的情 ...

  9. Spring依赖注入(DI)详解

    一.依赖简介 一个典型的企业应用程序不是由一个单一的对象组成(或Spring的说法中的bean).即使是最简单的应用程序也只有几个对象一起工作来呈现最终用户看作是一个连贯的应用程序.如何从定义许多独立 ...

  10. 深入浅出Redis

    一.Redis的诞生 Redis创建者,出生于西西里岛的意大利人(antirez)发明的,个人网站,http://invece.org.早年是系统管理员,2004-2006 年做嵌入式方面的工作,之后 ...