基本概念

二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)

特性

性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>0)
性质2: 深度为k的二叉树至多有2^k - 1个结点(k>0)
性质3: 对于任意一棵二叉树,如果其叶结点数为N0,而度数为2的结点总数为N2,则N0=N2+1;
性质4:具有n个结点的完全二叉树的深度必为 log2(n+1)
性质5:对完全二叉树,若从上至下、从左至右编号,则编号为i 的结点,其左孩子编号必为2i,其右孩子编号必为2i+1;其双亲的编号必为i/2(i=1 时为根,除外)

时间复杂度

操作 二叉查找树 平衡二叉树 红黑树
查找 O(n) O(logn) Olog(n)
插入 O(n) O(logn) Olog(n)
删除 O(n) O(logn) Olog(n)

注意:其中n为树的深度

种类

完全二叉树

完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布
二叉树 - 图2

满二叉树

除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树
二叉树 - 图3

二叉查找树

  1. 左子树上所有结点的值都小于它的根结点的值
  2. 右子树上所有结点的值都大于它的根结点的值
  3. 没有键值相等的结点

二叉树 - 图4

平衡二叉树(AVL)

它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树
二叉树 - 图5

红黑树

  1. 节点是红色或黑色
  2. 根节点是黑色
  3. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)
  4. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点

    image.png

    二叉树 - 图7