erl_tree-通用二叉查找树 gb_tree

本文介绍了Erlang中的gb_tree数据结构,它是一种通用二叉查找树,常用于实现有序字典。gb_tree的内部结构包含Key、Value、Smaller和Bigger节点,并强调了key的比较不应使用等价比较,而应采用小于和大于的比较。文章提到了gb_tree的插入操作不一定每次平衡,并展示了部分函数的重点分析,特别是insert函数和balance过程。gb_tree的平衡通过to_list_1和递归二分构造来实现。后续将探讨avl_tree的平衡操作。
摘要由CSDN通过智能技术生成

gb_tree :(General Balanced Trees) 通用二叉查找树,通常被用作有序字典.
gb_trees={Size,Tree}
Tree= {Key, Value, Smaller, Bigger} |nil
Smaller=Tree
Bigger= Tree

整个结构都是用key 来判断节点位置,gb_tree对key有这样一段注释:
%% The term order is an arithmetic total order, so we should not
%% test exact equality for the keys. (If we do, then it becomes
%% possible that neither >',<’, nor `=:=’ matches.) Testing ‘<’
%% and ‘>’ first is statistically better than testing for
%% equality, and also allows us to skip the test completely in the
%% remaining case.
在我的测试中key可以是term int string。。

在坚强:http://www.cnblogs.com/me-sa/archive/2012/06/23/erlang-gb_trees.html 博客里有对各个函数的相应分析,

以下是对部分函数的关注点分析:
insert 函数 插入不是每次都balance :
insert_1(Key

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值