二叉排序树和堆的区别

原创 2015年11月20日 12:36:32

在二叉排序树中,每个结点的值均大于其左子树上所有结点的值,小于其右子树上所有结点的值,对二叉排序树进行中序遍历得到一个有序序列。所以,二叉排序树是结点之间满足一定次序关系的二叉树;


  堆是一个完全二叉树,并且每个结点的值都大于或等于其左右孩子结点的值(这里的讨论以大根堆为例),所以,堆是结点之间满足一定次序关系的完全二叉树。


  具有n个结点的二叉排序树,其深度取决于给定集合的初始排列顺序,最好情况下其深度为log n(表示以2为底的对数),最坏情况下其深度为n;

  具有n个结点的堆,其深度即为堆所对应的完全二叉树的深度log n 。


  在二叉排序树中,某结点的右孩子结点的值一定大于该结点的左孩子结点的值;在堆中却不一定,堆只是限定了某结点的值大于(或小于)其左右孩子结点的值,但没有限定左右孩子结点之间的大小关系。


  在二叉排序树中,最小值结点是最左下结点,其左指针为空;最大值结点是最右下结点,其右指针为空。在大根堆中,最小值结点位于某个叶子结点,而最大值结点是大根堆的堆顶(即根结点)。


  二叉排序树是为了实现动态查找而设计的数据结构,它是面向查找操作的,在二叉排序树中查找一个结点的平均时间复杂度是O(log n);
  堆是为了实现排序而设计的一种数据结构,它不是面向查找操作的,因而在堆中查找一个结点需要进行遍历,其平均时间复杂度是O(n)。
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

树的高度和深度的区别

树的高度和深度的区别 标签: 数据结构二叉树 2014-04-16 10:47 3362人阅读 评论(0) 收藏 举报  分类: 数据结构 版权声明:本文...

堆和二叉树的区别

以小根堆为例,堆的特点是双亲结点的关键字必然小于等于孩子结点的关键字,而两个孩子结点的关键字没有次序规定,而二叉排序数中,每个双亲结点的关键字均大于左子树结点的关键字,均小于右子树j结点的关键字,也就...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

二叉排序树(Binary Sort Tree,二叉查找树,二叉搜索树)--【算法导论】

1、首先是了解了二叉搜索树; 2、接下来看的是查询二叉搜索树,查询二叉搜索树的内容比较多; (1)查找:即是查询关键字,若存在,返回该节点的指针;否则,返回空;这个书中给了两段伪码,迭代、递归随意; ...
  • xjm199
  • xjm199
  • 2014-02-26 22:45
  • 7718

散列表(哈希表)

1、序         该篇分别讲了散列表的引出、散列函数的设计、处理冲突的方法。并给出一段简单的示例代码。 2、散列表的引出         给定一个关...

C++ 二叉排序树BST(二叉查找树)

BST属于对无序集合排序查找算法中的一种,通过定义左小右大的规则放置无序集合中的元素,使得中序遍历能得到排序后的集合,并且任一子树都是二叉排序树。二叉排序树中右子树上任一元素大于该节点上左子树中全部元...

动态查找表之二叉排序树的查找、遍历、删除

一、动态查找表       静态查找表只是对表中元素进行检索,返回成功或不成功!       动态查找表的表结构是在查找的过程中动态生成的。若表中存在关键字等于给定的值key的记录,则返回成功;否...

腾讯公司有十周年抽奖活動吗∵

腾 讯 》 抽 奖 备 案 电 话 【0755+3303-7551】 中 奖 查 询 热 线 【0755+3303-7551】 腾 讯 活 动 公 证 处 电 话【0755+3303-7551】 (公...

二叉排序树中的第k小元素

【题目描述】 如题:查找二叉排序树中的第k小元素【若是结点的话,就直接输出TreeNode就行】。即leetcode的230题 【方法一】 1、计算左子树元素个数left。 2、 left+...

二叉排序树(BST)的判定(其实不容易)

对于BST,一定要理解透彻,下面,我们给出一个有错误的BST判定程序: // 程序中的isBST函数的逻辑是有错误 #include #define N 7 using namespace st...

如何用adb连接android手机?(我的亲自经历)------ 顺便说说unable to connect to 192.168.1.100:5555的原因和解决方法

adb是什么呢? 我就不多说了, 对于搞android开发的人来说, 一定不陌生。 本文讲述如何用adb来连接手机。
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)