• 树结构


    二叉树:二叉树是每个节点最多有两个子树的树结构。

    满二叉树:一棵深度为K且有2^k-1个结点的二叉树称为满二叉树。

    完全二叉树:每个结点与其对应深度的满二叉树一一对应。

    二叉排序树:或者是一棵空树,或者是具有下列性质的二叉树: 
    A. 左子树若不为空,则左子树上所有节点的值均小于它的根结点值; 
    B. 右它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 
    C. 它的左、右子树也分别是二叉排序树;

    平衡二叉树:又称AVL树,或者是一棵空树,或者是具有下列性质的二叉树: 
    A. 它的左右子树都是平衡二叉树,且左右子树深度差不超过1;

    红黑树:自平衡二叉查找树,典型的用途是实现关联数组。它的特性保证了,最长路径长度不会是最短路径长度的2倍。 
    特性: 
    1. 节点是红色或黑色。 
    2. 根节点是黑色。 
    3. 每个叶节点(NIL节点,空节点)是黑色的。 
    4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) 
    5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。

    Trie树:字符索引,字典树 
    桶状哈希表与直接定址表 
    Trie树详解及其应用 
    字典树(Trie树)的C程序实现代码 
    Trie树的常见应用大总结(面试+附代码实现)

    B-树:又称B树,B-树是一种平衡的多路查找树(查找均满足左小右大的条件),它在文件系统中很有用。 
    一棵m阶的B-树,或为空树,或为满足下列特性的m叉树: 
    A. 树中每个结点至多有m棵子树; 
    B. 若根结点不为叶子结点,则至少有两棵子树; 
    C. 除根之外的所有非终端结点至少有[ m/2 ]棵子树; 
    D. 所有非终结点包含这样的信息:(n, A0, K1, A1, K2, A2, … Kn, An..);  代码有n个key,n+1个指针指向子树;
    E. 所有叶子结点都出现在同一层次上,表示为空。

    B+树:B+树是应文件系统所需而出的一种B-树的变形树,一棵m阶的B+树和m阶的B-树差异在于: 
    A: 有n个关键字的结点拥有n棵子树。(B-树中n个关键字有n+1棵子树); 
    C: 非终节点关键字可看作是索引部分,是对应子树中关键字的最大或最小值; 
    B: 所有的叶子结点中包含了全部关键字信息,及指向这些关键字记录的指针,且叶子结点中关键字按从小到大链接;

    最优二叉树(赫夫曼树): 
    解决了带权值的的最短花费问题。 
    赫夫曼编码(前缀编码):编码对象长度不一样,实现最短编码方案。原理是保证了每一种对象编码都不会是其它对象编码的前缀。

     

    树的遍历方式: 
    树:树先根遍历、后根遍历 
    例:(先)A B C D E、(后)B D C E A 
    ____A 
    B___C___E 
    ____D

    森林:先序、中序(其实就是每棵树的后根遍历)

    二叉树:先、中、后序

  • 相关阅读:
    JVM专题3: GC 垃圾回收
    Java多线程专题3: Thread和ThreadLocal
    STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块
    STC8H开发(八): NRF24L01无线传输音频(对讲机原型)
    沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录
    Java多线程专题4: 锁的实现基础 AQS
    Java多线程专题6: Queue和List
    JVM专题2: JVM内存结构
    沁恒CH32F103C8T6(三): PlatformIO DAPLink和WCHLink下载配置
    沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录
  • 原文地址:https://www.cnblogs.com/mzzcy/p/7096925.html
Copyright © 2020-2023  润新知