Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Erlang 1.42 KB | None | 0 0
  1. -module(prog1).
  2. -compile([export_all]).
  3.  
  4. insertTree(Value, nil) -> {Value,nil,nil};
  5. insertTree(Value, {Data,Left,Right}) when Value =< Data -> {Data,insertTree(Value,Left),Right};
  6. insertTree(Value, {Data,Left,Right}) when Value > Data -> {Data,Left,insertTree(Value,Right)};
  7. insertTree(_,{Data,Left,Right}) -> {Data,Left,Right}.
  8.  
  9. insertRandom(0,Tree) -> Tree;
  10. insertRandom(N,Tree) when N > 0 ->
  11.      insertTree(lists:seq(1, 1000),Tree),
  12.      insertRandom(N-1,Tree).
  13.      
  14. listToTree([],Tree) -> Tree;
  15. listToTree([H|L],Tree) ->
  16.     insertTree(H,Tree),
  17.     listToTree(L,Tree).
  18.    
  19. preOrder(nil) -> [];
  20. preOrder({Value,Left,Right}) ->
  21.     [Value] ++ preOrder(Left) ++ preOrder(Right).
  22.    
  23. inOrder(nil) -> [];
  24. inOrder({Value,Left,Right}) ->
  25.     inOrder(Left) ++ [Value] ++ inOrder(Right).
  26.    
  27. postOrder(nil) -> [];
  28. postOrder({Value,Left,Right}) ->
  29.     postOrder(Left) ++ postOrder(Right) ++ [Value].
  30.    
  31. search(_,nil) -> nil;
  32. search(V,{Value,Left,Right}) ->
  33.     if V == Value -> true;
  34.     V < Value -> search(V,Left);
  35.     V > Value -> search(V,Right)
  36.     end.
  37.    
  38. ifTreeContaints(_,nil) -> throw(false);
  39. ifTreeContaints(V,{Val,_,_}) when V == Val -> throw(true);
  40. ifTreeContaints(V,{Val,Left,_}) when V < Val -> ifTreeContaints(V,Left);
  41. ifTreeContaints(V,{Val,_,Right}) when V > Val -> ifTreeContaints(V,Right).
  42.  
  43. searchX(Val,Tree) ->
  44.      try
  45.         ifTreeContaints(Val,Tree)
  46.     catch
  47.         throw:true -> 'true';
  48.         throw:false -> 'false'
  49.     end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement