算法导论--树和散列表

二叉树T中如何利用属性p, left, right存放指向父节点、左孩子和右孩子的指针。如果x.p = NIL,则x是根节点。如果x没有左孩子,
则x.left = NIL,如果x没有右孩子,则x.right = NIL。属性T.root指向整棵树T的根节点。如果T.root = NIL,则该树为空。

分支无限制的有根树
	二叉树的定义方法可以推广到每个节点的孩子数至多为常数k的任意类型的树;只需要将left和right换成child1,..., childk。
但当k的值无限制时,这种表示方法失效。假设k被限制在某个常数范围内,但多数节点的只有少数的孩子,则会浪费大量的内存。使用
左孩子右兄弟表示法,每个节点包含一个父节点指针p,且T.root指向树T的根节点。每个节点中只有两个指针,
x.left-child指向x最最左侧的孩子节点;x.right-sliding指向x右侧的相邻的兄弟节点。如果x没有孩子节点,则x.left-size = NIL,
如果x是其父节点最右孩子,则x.right-sliding = NIL。

散列表--
	实现字典操作,元素的关键字、下标记过对关键字计算得来;
	直接寻址法:	
		表示方式:数组T[0..m-1]
		前提条件:关键字的范围U{0...m},m不是很大的一个数值。

	散列表:
		解决直接寻址方式的缺陷:全域U很大,实际存储的关键字集合K相对U较小,导致分配给T的空间的浪费。
		在直接寻址方式下,关键字k的元素被存放在槽k中;在散列方式下,该元素存放在槽h(k)中,即利用
	散列函数h,由关键字k计算出槽的位置。通过h缩小数组下标的范围,由[U]减小为m;在h的过程中,可能导致两个
	k映射到同一个槽中,这种情况称为冲突,解决冲突的办法是链接法和开发寻址
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值