k[i]<=
k[2i]
k[i]<=
k[2i+1]
用完全二叉树表示很直观,也就是要能组成这样一个完全二叉树:
所有的父结点的值都应该小于左右子孩子结点的值。
答案c中关键码序列用完全二叉树表示后很容易看出,在d结点值d大于了左子结点值c,这不符合小根堆定义,同样在r结点值r大于了左子结点值m和右子结点值n。
而其他答案都符合小根堆定义。
因为关键码序列是符合小根堆定义的一个序列,他是完全二叉树中关键字从根开始从上到下,从左到右的这样一个顺序,也即符合完全二叉树中子树结点是父结点k[2i]和k[2i+1]的。比如答案a组成的完全二叉树如下:
----------------a----------------
-----------c---------d
--------g-----h-----m--p
------q--r---xA s根据堆的定义(1) ai≤K2i且ai≤a2i+1 或(2)ai≥a2i且ai≥a2i+1(1≤i≤ n) ai就表示序列中第i个数,a2i表示第2i个数你自己算一下,我是大概看了一下,只要满足其中一个公式都是对的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)