首页 > 其他 > 详细

数据结构复习(1)bst

时间:2015-02-13 22:24:41      阅读:353      评论:0      收藏:0      [点我收藏+]

平衡树

treap:
(1)树+堆。具体是随机某个节点的值,然后维护这个值满足堆的性质。
(2)代码实现

sbt:
(1)陈大神的节点大小平衡树,其实就是根据四种情况进行调整,而这四种情况也是其他bst会使用的调整方式。中心思想就是当节点信息变时,用maintain调整
(2)代码实现

procedure maintain(var t:longint);
begin
if s[left[left[t]]]>s[right[t]] then begin //左左>右的情况:先右旋,当前根右节点变了,需要调整,然后根变了,需要调整。
rightrotate(t);
maintain(right[t]);
maintain(t);
exit;
end;
if s[right[left[t]]]>s[right[t]] then begin //左右>右的情况:先左旋左儿子,使左右变成左儿子,再左旋,让左儿子变成根,至此,当前根的左儿子要调整,当前根的右儿子也要调整,当前根也要调整
leftrotate(left[t]);
rightrotate(t);
maintain(left[t]);
maintain(right[t]);
maintain(t);
exit;
end;
if s[right[right[t]]]>s[left[t]] then begin
leftrotate(t);
maintain(left[t]);
maintain(t);
exit;
end;
if s[left[right[t]]]>s[left[t]] then begin
rightrotate(right[t]);
leftrotate(t);
maintain(left[t]);
maintain(right[t]);
maintain(t);
end;
end;

数据结构复习(1)bst

原文:http://www.cnblogs.com/Macaulish/p/4290931.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!