《算法导论》笔记 第19章 19.1 二项树与二项堆

【笔记】


二项树:


二项树Bk是一种递归定义的有序树。二项树B0只包含一个结点。二项树Bk由两棵二项树Bk-1连接而成:其中一棵树是另一棵树的根的最左孩子。


二项树Bk有以下性质:

1) 共有2^k个结点

2) 树的高度为k

3) 在深度i处恰有C_k^i个结点,其中i=0,1,2,...,k

4) 根的度数为k,它大于任何其它结点的度数;并且,如果根的子女从左到右编号为k-1,k-2,...,0,子女i是子树Bi的根。


在一棵包含n个结点的二项树中,任意结点的最大度数为lgn。


二项堆:

二项堆由一组满足下面的二项堆性质的二项树组成:

1) H中的每个二项树遵循最小堆性质:结点的关键字大于或等于其父结点的关键字。我们所这种树是最小堆有序的。

2) 对任意非负整数k,在H中至多有一棵二项树的根具有度数k。


每个结点x还包含了指向其父结点的指针p[x],指向其最左孩子的指针child[x],以及指向x的紧右兄弟的指针sibling[x]。


一个二项堆中的各二项树的根被组织成一个链表,我们称之为根表。


【练习】


19.1-1 假设x为一个二项堆中,某棵二项树中的一个结点,并假定sibling[x]!=NIL。如果x不是根,则degree[sibling[x]]与degree[x]相比怎么样?如果x是个根呢?

如果x不是根,则是一个二项树内的某个结点由二项堆性质可知degree[sibling[x]]=degree[x]-1。

如果x是根


19.1-2 如果x是二项堆的某棵二项树的一个非根结点,degree[p[x]]与degree[x]相比怎么样?

degree[p[x]]>degree[x]


19.1-3 如图所示,假设按后序遍历顺序,将二项树Bk中的结点标为二进制形式。考虑深度i处标为l的一个结点x,且设j=k-i。证明:在x的二进制表示中共有j个1。恰包含j个1的二进制k串共有多少?证明x的度数与l的二进制表示中,最右0的右边的1的个数相同。




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值