平衡二叉树、完全二叉树、满二叉树、二叉搜索(查找 / 排序)树、平衡二叉搜索树、二叉堆
2017-06-03 16:21
399 查看
查了一些博客、百科整理出以下关于树的定义以及易混点:
平衡二叉树:一棵空树或左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是平衡二叉树。(注意:实际应用中很少有不是二叉搜索树的平衡二叉树,所以很多语境下平衡二叉树即指平衡二叉搜索树,但本文中不使用这样的简称)
完全二叉树:设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层从右向左连续缺若干结点。(完全二叉树是特殊的平衡二叉树)
满二叉树:深度为k,且有2的(k)次方-1个节点——每一层上的结点数都是最大结点数。(此为国内定义)(满二叉树是特殊的完全二叉树)
二叉搜索(查找 / 排序)树BST:左子树上的值都小于根结点的值,右子树上的值都大于根结点的值,且左右子树都是二叉排序树。
平衡二叉搜索树AVL:一棵空树或它的左右两个子树的高度差的绝对值不超过1,左子树上的值都小于根结点的值,右子树上的值都大于根结点的值,且左右两个子树都是一棵平衡二叉树。常用算法有红黑树、AVL、Treap、伸展树等。(注意:AVL可以表示算法也可以表述树,二者不是一件事)
———————————————————————————
堆:通常是一个可以被看做一棵树的数组对象,堆中某个节点的值总是不大于或不小于其父节点的值,堆总是一棵完全树。
堆分为两种:最大堆——父结点的键值总是大于或等于任何一个子节点的键值,最小堆——父结点的键值总是小于或等于任何一个子节点的键值。常见的堆有二叉堆、二项式堆、斐波那契堆等。
(注意:实际应用中较少使用不是二叉堆的堆,所以很多语境下堆即指二叉堆,但本文中不使用这样的简称)
二叉堆:一种特殊的堆,是完全二叉树或者是近似完全二叉树。
(注意:二叉堆用于堆排序,但不意味着二叉堆就是堆排序,只是堆排序利用了二叉堆的优良性质)
———————————————————————————
此外,没有找到“近似完全二叉树”的统一定义,姑且认为完全二叉树分为近似完全二叉树和满二叉树。
平衡二叉树:一棵空树或左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是平衡二叉树。(注意:实际应用中很少有不是二叉搜索树的平衡二叉树,所以很多语境下平衡二叉树即指平衡二叉搜索树,但本文中不使用这样的简称)
完全二叉树:设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层从右向左连续缺若干结点。(完全二叉树是特殊的平衡二叉树)
满二叉树:深度为k,且有2的(k)次方-1个节点——每一层上的结点数都是最大结点数。(此为国内定义)(满二叉树是特殊的完全二叉树)
二叉搜索(查找 / 排序)树BST:左子树上的值都小于根结点的值,右子树上的值都大于根结点的值,且左右子树都是二叉排序树。
平衡二叉搜索树AVL:一棵空树或它的左右两个子树的高度差的绝对值不超过1,左子树上的值都小于根结点的值,右子树上的值都大于根结点的值,且左右两个子树都是一棵平衡二叉树。常用算法有红黑树、AVL、Treap、伸展树等。(注意:AVL可以表示算法也可以表述树,二者不是一件事)
———————————————————————————
堆:通常是一个可以被看做一棵树的数组对象,堆中某个节点的值总是不大于或不小于其父节点的值,堆总是一棵完全树。
堆分为两种:最大堆——父结点的键值总是大于或等于任何一个子节点的键值,最小堆——父结点的键值总是小于或等于任何一个子节点的键值。常见的堆有二叉堆、二项式堆、斐波那契堆等。
(注意:实际应用中较少使用不是二叉堆的堆,所以很多语境下堆即指二叉堆,但本文中不使用这样的简称)
二叉堆:一种特殊的堆,是完全二叉树或者是近似完全二叉树。
(注意:二叉堆用于堆排序,但不意味着二叉堆就是堆排序,只是堆排序利用了二叉堆的优良性质)
———————————————————————————
此外,没有找到“近似完全二叉树”的统一定义,姑且认为完全二叉树分为近似完全二叉树和满二叉树。
相关文章推荐
- Java数据结构----树--二叉查找(搜索或排序)树BST
- 二叉 查找树 排序树 搜索树
- 二叉树中完全二叉树、满二叉树、二叉排序树、平衡二叉树的区别和联系
- 二叉树、平衡二叉树、完全二叉树、满二叉树
- 二叉树,完全二叉树,满二叉树,二叉排序树,平衡二叉树,红黑树,B数,B-树,B+树,B*树(一)
- 满二叉树、完全二叉树、平衡二叉树、哈夫曼树
- 二叉树、平衡二叉树、完全二叉树、满二叉树
- 二叉树中完全二叉树、满二叉树、二叉排序树、平衡二叉树的区别和联系
- 判断一棵二叉树是否为搜索二叉树、完全二叉树、平衡二叉树(java)
- 二叉查找(排序)树
- 排序和搜索(一)——python实现顺序查找
- Java 二叉查找(排序)树 创建 以及中序和层序遍历
- 二叉树、平衡二叉树、完全二叉树、满二叉树
- 二叉树,完全二叉树,满二叉树,平衡二叉树
- 二叉查找(排序)树的分析与实现
- 数据结构——树(1):树的基本概念,二叉树、完全二叉树、满二叉树、搜索二叉树
- Java 二叉查找(排序)树 创建 以及中序和层序遍历
- 排序和搜索(三)——hash查找之冲突解决(2)
- 二叉 搜索/查找 树、二叉排序树、BST
- SICP 建立二叉查找(排序)树