码迷,mamicode.com
首页 > 其他好文 > 详细

二叉树

时间:2019-03-17 23:05:59      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:方式   相交   超过   深度   arc   结构   构建   个数   binary   

1. 二叉树

  • 二叉树(Binary Tree)是含有n个结点的有限集合,当n = 0时称为空二叉树。在非空二叉树中:
    • 有且仅有一个称为根的结点
    • 其余结点划分为两个互不相交的子集 L 和 R, 其中 L 和 R 也是一棵二叉树,分别称为左子树和右子树。

 

2. 满二叉树

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

 

3. 完全二叉树

  • 从根起自上而下,自左而右,给满二叉树中的每个结点从1至n连续编号,编号为 i 的结点可称为 i 结点。深度为 k 且含有 n 个结点的二叉树,如果其每个结点都与深度为 k 的满二叉树中编号从 1 至 n 一一对应,则称为完全二叉树

4. 堆

  • 堆是一类完全二叉树,常用语实现排序,选择最小(大)值和优先队列
  • 其所有非叶子结点均不大于(或不小于)其左右孩子结点

 

5. 二叉查找树

  • 二叉查找树(Binary Search Tree)又称为二叉排序树。或者是一棵空二叉树,或者是具有如下特性的二叉树
    • 若左子树不空,则左子树上所有结点的值均小于根结点的值
    • 若右子树不空,则右子树上所有结点的值均大于根结点的值
    • 左、右子树也分别是二叉查找树
  • 其查找效率与树的高度直接相关

 

6.  平衡二叉树

  • 平衡二叉查找树(Balanced Binary Sort Tree),简称平衡二叉树。
  • 平衡二叉树或者是棵空树,或者具有下列性质:
    • 左右子树都是平衡二叉树
    • 且左右子树的高度之差的绝对值不超过 1。
    • 若将二叉树结点的平衡因子定义为该结点的左子树的高度减去右子树的高度,则所有结点的平衡因子只可能为 -1、0、1.
    • 其中只要有一个结点的平衡因子的绝对值大于 1,那么这个棵树就失去平衡。

 

7. AVL树

  • 平衡二叉树的一种实现
  • 通过左旋、右旋、先左旋再右旋或者先右旋再左旋,来实现自平衡。

 

8. 红黑树

  • 平衡二叉树的一种实现
  • 特性:
    • 根结点是黑色的
    • 每个叶子结点是黑色的(指为空的叶子结点)
    • 如果一个结点是红色的,则它的子树必须是黑色的
    • 从一个结点到该结点的子孙结点的所有路径上包含相同数目的黑结点
  • 主要用于存储有序的数据,并且通过维持树的平衡来提高搜索效率

 

9. B树

  • 二叉查找树和平衡二叉树都是典型的二叉查找树结构,查找的时间复杂度与树的高度相关。一般而言,树的高度越低,则查找效率越高。
  • 为了降低树的高度,可令每个结点存储更多元素,将平衡二叉树扩展为平衡二叉查找树。构建磁盘文件索引时其典型应用之一。
    • 树中每个结点最多含有 m 棵子树
    • 若根结点是非终端结点,则至少有2棵子树
    • 除根结点之外所有非终端结点至少有[ m / 2]棵子树
    • 每个非终端结点中包含(n, A0, K1, A1, K2, A2, ~ , Kn, An)
      • Ki 为关键字,按升序排序
      • 指针Ai 指向子树的根结点,Ai - 1 指向子树中所有结点的关键字均小于 Ki,且大于 Ki - 1
      • 关键字的个数 n 必须满足:[ m / 2](向上取整) - 1 <= n <= m - 1
    • 所有叶子结点都出现在同一层,叶子结点不包含任何信息

 

10. B+树

  • 与B树最大的不同在于:
  • 通常 B+ 树有两个头指针,一个指向根结点,一个指向关键字最小的叶子结点。
  • 因此查找方式有两种:
    • 从根结点开始
    • 从最小关键字起按顺序查找

二叉树

标签:方式   相交   超过   深度   arc   结构   构建   个数   binary   

原文地址:https://www.cnblogs.com/BitingCat/p/10549301.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!