From c6f3fbb82c4d2b152541a525ad618d2cb9804486 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Wed, 29 Jul 2009 03:43:58 +0000 Subject: [PATCH] treap.erl backport SVN Revision: 2400 --- src/treap.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/treap.erl b/src/treap.erl index 360f543de..42438f228 100644 --- a/src/treap.erl +++ b/src/treap.erl @@ -44,7 +44,7 @@ insert(Key, Priority, Value, Tree) -> insert1(nil, HashKey, Priority, Value) -> {HashKey, Priority, Value, nil, nil}; -insert1({HashKey1, Priority1, Value1, Left, Right}, +insert1({HashKey1, Priority1, Value1, Left, Right} = Tree, HashKey, Priority, Value) -> if HashKey < HashKey1 -> @@ -55,8 +55,10 @@ insert1({HashKey1, Priority1, Value1, Left, Right}, heapify({HashKey1, Priority1, Value1, Left, insert1(Right, HashKey, Priority, Value)}); + Priority == Priority1 -> + {HashKey, Priority, Value, Left, Right}; true -> - erlang:error(key_exists) + insert1(delete_root(Tree), HashKey, Priority, Value) end. heapify(nil) ->