• 数据结构:树和二叉树的概念及性质


    树的基本概念

    树的定义

    基本术语

    在这里插入图片描述

    1. 祖先结点:从根到该节点所经分支上的所有结点,(包含父节点)。例:J的祖先结点:A、B、E
    2. 子孙结点:一个结点的直接后继和间接后继(包含子节点)。例: B的子孙结点:E、F、J、K
    3. 双亲结点(父结点):一个结点的直接前驱结点
    4. 孩子结点:一个结点的直接后继结点
    5. 兄弟结点:同一双亲结点的孩子结点之间互称兄弟结点
    6. 堂兄弟结点:父结点是兄弟关系或堂兄关系的结点
    7. 叶子结点:度为0的结点,无后继结点,也称终端结点
    8. 分支结点:度不为0的结点,有后继结点,也称非终端结点
    9. 度:树中一个结点的孩子个数称为该结点的度,树中结点的最大度数称为树的度。例:A的度=3,B的度=2,树的度=3。
    10. 深度:从根结点开始自顶向下逐层累加
    11. 高度:从叶结点开始子底向上逐层累加
    12. 层次:从根结点开始定义,根结点的层次=1。
    13. 有序树(无序树):树中结点各子树从左到右是有次序的,不能互换,则为有序树,否则为无序树
    14. 森林:m(m ≥ \geq 0)棵互不相交的树的集合
      在这里插入图片描述

    树的性质

    在这里插入图片描述

    度为m的树m叉树
    各结点的度的最大值每个结点最多只能有m个孩子
    任意结点的度 ≤ \le m任意结点的度 ≤ \le m
    至少有 一个结点 ≤ \le m允许所有结点的度 < < < m
    一定是非空树,至少有m+1个结点可以是空树
    第i层之多有 m i − 1 m^{i-1} mi1个结点(i ≥ \geq 1)第i层之多有 m i − 1 m^{i-1} mi1个结点(i ≥ \geq 1)
    高度为h、度为m的树至少h+m-1个结点高度为h的m叉树至多 m h − 1 m − 1 \frac{m^h-1}{m-1} m1mh1个结点
    具有n个结点的m叉树,最小高度为 l o g m ( n ( m − 1 ) + 1 ) log_m(n(m-1)+1) logm(n(m1)+1)

    二叉树

    二叉树的定义

    • 二叉树定义

      1. 二叉树 ≠ \neq =度为2的树
      2. 二叉树是有序树,有左右之分

      在这里插入图片描述

    • 几种特殊的二叉树
      在这里插入图片描述

      1. 满二叉树(特殊的完全二叉树
      • 定义:一棵高度为h的,且含有 2 h − 1 2^h-1 2h1 个结点的二叉树称为满二叉树

      • 除叶子结点外,每个结点度都等于2

      • 对于编号i的结点,若有双亲结点,双亲为 i 2 \frac{i}{2} 2i,左孩子 2 i 2i 2i,右孩子为 2 i + 1 2i+1 2i+1(看上图可推)

      1. 完全二叉树

        1. i ≤ n 2 i\le \frac{n}{2} i2n,则结点i分支结点,否则为叶子结点。
          • 原因:第n个结点的父结点是 n 2 \frac{n}{2} 2n,所以其父结点的前面都是分支结点,父结点后面都是叶子结点
        2. 按层序编号后,一旦出现某结点(编号为i)为叶子结点或只有左孩子,则编号大于i的结点均为叶子结点。(与1意思相同)
        3. 叶子结点只可能在层次最大的两层上出现。对于最大层次中的叶子结点,都依次排列在该层最左边的位置上。
        4. 若有度为1的结点,则只可能有一个,且该结点只有左孩子而无右孩子
        5. n为奇数,则每个分支结点都有左孩子和右孩子:若n为偶数,则编号最大的分支结点(编号为n/2)只有左孩子,没有右孩子,其余分支结点左、右孩子都有。
          • 左孩子 2 i 2i 2i(偶数),右孩子为 2 i + 1 2i+1 2i+1 (奇数)
      2. 二叉排序树
        左子树上所有结点的关键字均小于根结点的关键字;右子树上的所有结点的关键字均大于根结点的关键字;左子树和右子树又各是一棵二叉排序树。

      3. 平衡二叉树
        树上任一结点的左子树和右子树的深度之差不超过1

    二叉树的性质

    1. 非空二叉树的叶子结点=度为2的结点+1,即 n 0 = n 2 + 1 n_0=n_2+1 n0=n2+1

      >

    2. 非空二叉树上第k层上至多有 2 k − 1 2^k-1 2k1个结点( k ≥ 1 k\geq1 k1)。

    3. 高度为h的二叉树至多有 2 h − 1 2^h-1 2h1个结点( h ≥ 1 h\geq1 h1)。

    4. 对于完全按从上到下、从左到右的顺序依次编号1,2,…,n,则有以下关系:

      1. i>1时,结点i的双亲的编号为i/2,即当i为偶数时,其双亲的编号为i/2,它是双亲的左孩子;当i为奇数时,其双亲的编号为(i-1)/2,它是双亲的右孩子。
      2. 2 i ≤ n 2i\le n 2in时,结点i的左孩子编号为2i,否则无左孩子。
      3. 2 i + 1 ≤ n 2i+1\le n 2i+1n时,结点i的右孩子编号为2i+1,否则无右孩子.
      4. 结点i所在层次(深度)为 l o g 2 i + 1 log_2i+1 log2i+1
    5. 具有n个结点的完全二叉树的高度为 l o g 2 ( n + 1 ) log_2(n+1) log2(n+1) l o g 2 n + 1 log_2n+1 log2n+1(要自己会推)
      在这里插入图片描述

  • 相关阅读:
    eclipse项目导入教程
    关于group by 后,想要查询多余列的问题
    😀 Java并发 - (并发基础)
    试图带你一文搞懂transformer注意力机制(Self-Attention)的本质
    Machine learning week 5(Andrew Ng)
    GPIO实验:ARM汇编代码实现LED灯亮灭控制
    NtyCo 协程设计原理与汇编实现
    数据库 1.关系
    网络层重点协议——IP协议
    【python_学习笔记】
  • 原文地址:https://blog.csdn.net/weixin_46629453/article/details/126044757