二叉树的一些性质

概述

本文给出了一些二叉树的常用性质,由笔者的复习笔记整理而来。

二叉树的常用性质总结

二叉树是数据结构中最基础且重要的树形结构之一,具有以下关键性质:


1. 基本性质

  1. 节点数计算

    • 若二叉树深度为 ( h ),则:
      • 最少节点数:( h + 1 )(退化为链状)。
      • 最多节点数:( 2^h - 1 )(满二叉树)。
    • 若总节点数为 ( n ),则:
      • 最小深度:( \lfloor \log_2 n \rfloor + 1 )。
      • 最大深度:( n )(链状树)。
  2. 边与节点关系

    • 一棵 ( n ) 个节点的二叉树有 ( n-1 ) 条边。
  3. 叶子节点与非叶子节点

    • 非空二叉树中,叶子节点数 ( n_0 ) 和非叶子节点数 ( n_1 + n_2 )(度为1和2的节点)满足:
      • ( n_0 = n_2 + 1 )(对于任何二叉树成立)。

2. 特殊二叉树的性质

  1. 满二叉树(Full Binary Tree)

    • 每个节点都有 0 或 2 个子节点。
    • 深度为 ( h ) 的满二叉树有 ( 2^h - 1 ) 个节点。
  2. 完全二叉树(Complete Binary Tree)

    • 除最后一层外,其他层必须填满,且最后一层节点靠左对齐。
    • 适用于数组存储(下标从 0 开始):
      • 父节点索引:( \lfloor (i-1)/2 \rfloor )。
      • 左孩子索引:( 2i + 1 )。
      • 右孩子索引:( 2i + 2 )。
  3. 二叉搜索树(BST)

    • 左子树所有节点值 < 根节点值 < 右子树所有节点值。
    • 中序遍历结果为有序序列。
  4. 平衡二叉树(如AVL树、红黑树)

    • 任意节点的左右子树高度差不超过 1(AVL树)或遵循红黑规则(红黑树)。
    • 保证操作(插入、删除、查找)的时间复杂度为 ( O(\log n) )。

3. 遍历性质

  1. 遍历序列唯一性

    • 前序 + 中序后序 + 中序 可唯一确定一棵二叉树。
    • 但前序 + 后序不能唯一确定(除非是满二叉树)。
  2. 递归遍历公式

    • 前序遍历:根 → 左 → 右。
    • 中序遍历:左 → 根 → 右。
    • 后序遍历:左 → 右 → 根。

关于更多遍历的内容可以参考这篇博文


4. 应用相关性质

  1. 堆(Heap)

    • 是完全二叉树,且满足堆序性质(大根堆/小根堆)。
    • 常用于优先队列和堆排序。
  2. 哈夫曼树(Huffman Tree)

    • 带权路径长度最短的二叉树,用于数据压缩。
    • 无度为1的节点(即只有 ( n_0 ) 和 ( n_2 ))。
  3. 表达式树

    • 叶子为操作数,内部节点为运算符。
    • 中序遍历得到中缀表达式,后序遍历得到后缀表达式。

5. 数学性质

  1. 不同形态的二叉树数量

    • ( n ) 个节点能构成的不同二叉树形态数为卡特兰数(Catalan Number):
      [
      C_n = \frac{1}{n+1} \binom{2n}{n}
      ]
    • 例如:3个节点有5种不同形态。
  2. 路径长度

    • 内部路径长度(IPL):根到所有内部节点的路径和。
    • 外部路径长度(EPL):根到所有叶子节点的路径和。
    • 对于满二叉树,( \text{EPL} = \text{IPL} + 2n )。

总结

  • 结构性质:节点、边、深度的关系是基础。
  • 特殊类型:满二叉树、完全二叉树、BST、平衡树各有独特性质。
  • 遍历与构造:遍历序列的关联性至关重要。
  • 应用场景:堆、哈夫曼树等依赖二叉树的特定性质。

你可能感兴趣的:(数据结构与算法,算法,数据结构)