Advertisement
Guest User

Untitled

a guest
Nov 9th, 2018
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 1.68 KB | None | 0 0
  1. -module(drzewobinarne).
  2. -export([empty/0, insert/3, has_value/2, has_value_exceptions/2, generate_from_list/1, generate_random_tree/0]).
  3.  
  4. empty() -> {node, 'nil'}.
  5.  
  6. %Wstawianie elementu do drzewa
  7. insert(Key, Val, {node, 'nil'}) ->
  8.     {node, {Key, Val, {node, 'nil'}, {node, 'nil'}}};
  9. insert(NewKey, NewVal, {node, {Key, Val, Smaller, Larger}}) when NewKey < Key ->
  10.     {node, {Key, Val, insert(NewKey, NewVal, Smaller), Larger}};
  11. insert(NewKey, NewVal, {node, {Key, Val, Smaller, Larger}}) when NewKey > Key ->
  12.     {node, {Key, Val, Smaller, insert(NewKey, NewVal, Larger)}};
  13. insert(Key, Val, {node, {Key, _, Smaller, Larger}}) ->
  14.     {node, {Key, Val, Smaller, Larger}}.
  15.  
  16. %Generacja losowego drzewa (liczby)
  17. generate_random_tree() -> generate_from_list([{K, V} || K <- rand:uniform(20), V <- rand:uniform(20), _ <- lists:seq(1, 10)]).
  18.  
  19. %Generacja drzewa z listy
  20. generate_from_list([]) -> empty();
  21. generate_from_list([{K,V}|T]) -> insert(K, V, generate_from_list(T)).
  22.  
  23. %Zwinięcie drzewa do listy (3 dowolne metody)
  24.  
  25.  
  26. %Szukanie elementu wersja normalana
  27. has_value(_, {node, 'nil'}) ->
  28. false;
  29. has_value(Val, {node, {_, Val, _, _}}) ->
  30. true;
  31. has_value(Val, {node, {_, _, Left, Right}}) ->
  32. case has_value(Val, Left) of
  33. true -> true;
  34. false -> has_value(Val, Right)
  35. end.
  36.  
  37. %Szukanie elementu wersja z wyjątkami
  38. has_value_exceptions(Val, Tree) ->
  39. try has_value_exceptions1(Val, Tree) of
  40. false -> false
  41. catch
  42. true -> true
  43. end.
  44.  
  45. has_value_exceptions1(_, {node, 'nil'}) ->
  46. false;
  47. has_value_exceptions1(Val, {node, {_, Val, _, _}}) ->
  48. throw(true);
  49. has_value_exceptions1(Val, {node, {_, _, Left, Right}}) ->
  50. has_value_exceptions1(Val, Left),
  51. has_value_exceptions1(Val, Right).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement