erlang 简单的树操作


下面是一个简单非平衡的二叉树的操作


-module(tree).
-export([test1/0]).
lookup(Key,nil)	->
	not_found;
lookup(Key,{Key,Value,_,_})	->
	{found,Value};
lookup(Key,{Key1,_,Smaller,_}) when Key < Key1	->
	lookup(Key,Smaller);
lookup(Key,{Key1,_,_,Bigger})	when Key > Key1 ->
	lookup(Key,Bigger).

insert(Key,Value ,nil)	->
	{Key,Value,nil,nil};
insert(Key,Value,{Key,_,Smaller,Bigger})	->
	{Key,Value,Smaller,Bigger}	;
insert(Key,Value,{Key1,V,Smaller,Bigger})	when Key < Key1 ->
	{Key1,V,insert(Key,Value,Smaller),Bigger};
insert(Key,Value,{Key1,V,Smaller,Bigger})	when Key > Key1	->
	{Key1,V,Smaller,insert(Key,Value,Bigger)}.
write_tree(T)	->
	write_tree(0,T).
write_tree(D,nil)	->
	io:tab(D),
	io:format('nil',[]);
write_tree(D,{Key,Value,Smaller,Bigger})	->
	D1 = D +4 ,
	write_tree(D1,Bigger),
	io:format('~n',[]),
	io:tab(D),
	io:format('~w ==> ~w~n',[Key,Value]),
	write_tree(D1,Smaller).

test1()	->
	S1=nil,
	S2=insert(4,joe,S1),
	S3=insert(12,fred,S2),
	S4=insert(3,jane,S3),
	S5=insert(7,kalle,S4),
	S6=insert(6,thomes,S5),
	S7=insert(5,rickard,S6),
	S8=insert(9,susan,S7),
	S9=insert(2,tobbe,S8),
	S10=insert(8,dan,S9),
	write_tree(S10).
	



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值