堆高包括根级别
Heap height includes root level
堆根是否包含在堆高计数中?
堆高应该代表堆结构的层数。
根据公式
- MIN 元素数 = 2 的幂 (h-1) ,
- 最大元素数 = 2 次方 h -1
root 级别计入堆高度。虽然,我发现了一些并非如此的描述。
-Q= 我很感兴趣是否有任何 不应该包括 root 的规则
计算堆高.
此外,我已经找到答案,在堆中,如果两个子元素具有相同的值,并且应该交换父元素,则可以安全地交换它(没有偏好 left/right 子元素) .谁能证实一下,这样我就可以彻底打消疑虑了。
更新:
根据 height 的定义,根的高度为 0,则最小和最大元素数的正确公式为:
- MIN=2 次幂 h
- MAX=元素个数=2次方(h+1)-1.
树高的正式定义根层级不包括在高度计数中。感谢 trincot 帮助解决这个疑问。
虽然这是解决堆高度的正确方法,但可能有一些在线资源将根级别包括到高度计数(官方定义是错误的)。
由于堆数据结构是一棵具有特定属性的树(具体来说,它是一棵有根的完全二叉树,其值服从堆属性),的定义堆的高度与有根树的高度定义相同
维基百科对其的定义as follows:
The height of a node is the length of the longest downward path to a leaf from that node. The height of the root is the height of the tree. [...] a tree with only a single node (hence both a root and leaf) has depth and height zero. Conventionally, an empty tree (tree with no nodes, if such are allowed) has height −1.
根据这个定义,一棵树的高度比一棵树的 层数 小一。
几乎总是使用这个定义。但在极少数情况下,您会发现高度是级别数的定义。例如here。但这是一个不太流行的定义。
这是为更流行的定义辩护的论据:
把树想象成一根绳子拼在一起的绳子,每根绳子的长度都是一样的(比如10cm),绳子两端绑在一起的地方就是顶点。现在拿起“根”,将它高举在空中。绳索全部垂直悬挂,形成一根竖直的柱子。现在测量从根部到这个悬挂结构最低点的距离:这就是我们所说的那个结构的物理高度。它是形成最长路径的小连接绳索的长度总和。这与树的高度的流行定义(如维基百科)相对应。它取决于最长路径的 边 的数量,而不是该路径上的 节点 的数量。
关于您的另一个问题:是的,如果父项应该筛选堆,并且两个子项具有相同的值,那么可以安全地交换它。
堆根是否包含在堆高计数中?
堆高应该代表堆结构的层数。 根据公式
- MIN 元素数 = 2 的幂 (h-1) ,
- 最大元素数 = 2 次方 h -1
root 级别计入堆高度。虽然,我发现了一些并非如此的描述。 -Q= 我很感兴趣是否有任何 不应该包括 root 的规则 计算堆高.
此外,我已经找到答案,在堆中,如果两个子元素具有相同的值,并且应该交换父元素,则可以安全地交换它(没有偏好 left/right 子元素) .谁能证实一下,这样我就可以彻底打消疑虑了。
更新: 根据 height 的定义,根的高度为 0,则最小和最大元素数的正确公式为:
- MIN=2 次幂 h
- MAX=元素个数=2次方(h+1)-1.
树高的正式定义根层级不包括在高度计数中。感谢 trincot 帮助解决这个疑问。 虽然这是解决堆高度的正确方法,但可能有一些在线资源将根级别包括到高度计数(官方定义是错误的)。
由于堆数据结构是一棵具有特定属性的树(具体来说,它是一棵有根的完全二叉树,其值服从堆属性),的定义堆的高度与有根树的高度定义相同
维基百科对其的定义as follows:
The height of a node is the length of the longest downward path to a leaf from that node. The height of the root is the height of the tree. [...] a tree with only a single node (hence both a root and leaf) has depth and height zero. Conventionally, an empty tree (tree with no nodes, if such are allowed) has height −1.
根据这个定义,一棵树的高度比一棵树的 层数 小一。
几乎总是使用这个定义。但在极少数情况下,您会发现高度是级别数的定义。例如here。但这是一个不太流行的定义。
这是为更流行的定义辩护的论据:
把树想象成一根绳子拼在一起的绳子,每根绳子的长度都是一样的(比如10cm),绳子两端绑在一起的地方就是顶点。现在拿起“根”,将它高举在空中。绳索全部垂直悬挂,形成一根竖直的柱子。现在测量从根部到这个悬挂结构最低点的距离:这就是我们所说的那个结构的物理高度。它是形成最长路径的小连接绳索的长度总和。这与树的高度的流行定义(如维基百科)相对应。它取决于最长路径的 边 的数量,而不是该路径上的 节点 的数量。
关于您的另一个问题:是的,如果父项应该筛选堆,并且两个子项具有相同的值,那么可以安全地交换它。