早教吧作业答案频道 -->数学-->
二叉堆的叶节点在数组中的下标为什么从[n/2]+1开始?《算法导论》里在堆排序那一章有一道证明题如下证明:数组表示存储n个元素的堆时,叶节点的下标分别是[n/2]+1,[n/2]+2,..n(此处[]指取下限[
题目详情
二叉堆的叶节点在数组中的下标为什么从[n/2]+1开始?
《算法导论》里在堆排序那一章有一道证明题如下
证明:数组表示存储n个元素的堆时,叶节点的下标分别是[n/2]+1,[n/2]+2,..n (此处[]指取下限[3/2] = 1)
我的疑问如下:
举例来讲,现在有8个节点,构成了一个二叉堆,
(1)
/ \
(2) (3)
/ \ / \
(4) (5) (6) (7)
/
(8)
即使如算法导论中的惯例,数组下标从1开始,何以见得,leaf node (8)的下标为8,但是按照算法导轮上的这道证明题的结论,叶节点(8)在数组里德下标应该是[n/2]+1= [8/2] + 1 = 5
究竟是怎么回事?是我的理解有偏差吗?
上述二叉堆并没有给出节点的值,括号里的数字是值数组里的index.
《算法导论》里在堆排序那一章有一道证明题如下
证明:数组表示存储n个元素的堆时,叶节点的下标分别是[n/2]+1,[n/2]+2,..n (此处[]指取下限[3/2] = 1)
我的疑问如下:
举例来讲,现在有8个节点,构成了一个二叉堆,
(1)
/ \
(2) (3)
/ \ / \
(4) (5) (6) (7)
/
(8)
即使如算法导论中的惯例,数组下标从1开始,何以见得,leaf node (8)的下标为8,但是按照算法导轮上的这道证明题的结论,叶节点(8)在数组里德下标应该是[n/2]+1= [8/2] + 1 = 5
究竟是怎么回事?是我的理解有偏差吗?
上述二叉堆并没有给出节点的值,括号里的数字是值数组里的index.
▼优质解答
答案和解析
二叉堆一般用数组来表示.如果根节点在数组中的位置是1,第n个位置的子节点分别在2n和 2n+1.因此,第1个位置的子节点在2和3,第2个位置的子节点在4和5.以此类推.这种基于1的数组存储方式便于寻找父节点和子节点.-----------数组表示存储n个元素的堆时,叶节点的下标分别是[n/2]+1,[n/2]+2,..n (此处[]指取下限[3/2] = 1)
是你的理解出了问题:
leaf node (8)的下标为8,按照算法导轮上的这道证明题的结论,有8个节点的二叉堆,在数组里叶节点的下标应该是从 [n/2]+1= [8/2] + 1 = 5 起,一直到 8 .即5~8都是叶节点.
是你的理解出了问题:
leaf node (8)的下标为8,按照算法导轮上的这道证明题的结论,有8个节点的二叉堆,在数组里叶节点的下标应该是从 [n/2]+1= [8/2] + 1 = 5 起,一直到 8 .即5~8都是叶节点.
看了 二叉堆的叶节点在数组中的下标...的网友还看了以下:
一个不等式证明已知n∈N+,求证:(2n+1)^n≥(2n)^n+(2n-1)^n下面是我的证明, 2020-05-13 …
A、B两点间的距离为s,均分为n段.一质点从A点由静止开始以加速度a运动,若质点,若质点到达每一段 2020-05-13 …
设M={x|f(x)=x},N={x|f(f(x))=x},(1)求证:M是N的子集(2)f(x) 2020-05-14 …
数列a[n+1]=k+(2k+1)a[n]+(k(k+1)a[n]a[n+1])^1/2 已知a1 2020-05-16 …
证明题求证此行列式等于右边的式子x-1...000x...00.=anx^n+an-1x^n-1+ 2020-05-17 …
在△ABC中,a=n²,b=n²-1/2,c=n²+1/2其中n为正奇数 求证此三角形为直角三角形 2020-05-17 …
一个证明,pi为圆周率,n为奇数1.设w为n次单位根(w=cos2pi/n+i*sin2pi/n) 2020-05-22 …
初等数论的几个问题(1)证明:当n是奇数时,3|2^n+1;当n是偶数时,3不能整除2^n+1(2 2020-06-12 …
证明:在n个正数的和为定值条件x1+x2+…+xn=a下,这n个正数的乘积x1x2…xn的最大值为 2020-07-30 …
用数学归纳法证明2+4+6+...+2n=n²+n时为什么从n=2开始证而不是n=1开始证 2020-08-01 …