1 | #include "avl.h" |
---|

2 | // #include "cwrap.h" |
---|

3 | #include <stdlib.hfa> |
---|

4 | |
---|

5 | forall(K | Comparable(K), V) |
---|

6 | void ?{}(tree(K, V) &t, K key, V value){ |
---|

7 | (t.key) { key }; |
---|

8 | (t.value) { value }; |
---|

9 | t.parent = NULL; |
---|

10 | t.left = NULL; |
---|

11 | t.right = NULL; |
---|

12 | t.balance = 0; |
---|

13 | } |
---|

14 | |
---|

15 | forall(K| Comparable(K), V) |
---|

16 | void ^?{}(tree(K, V) & t){ |
---|

17 | delete(t.left); |
---|

18 | delete(t.right); |
---|

19 | ^(t.key){}; |
---|

20 | ^(t.value){}; |
---|

21 | } |
---|

22 | |
---|

23 | forall(K | Comparable(K), V) |
---|

24 | tree(K, V) * create(K key, V value) { |
---|

25 | // infinite loop trying to resolve ... t = malloc(); |
---|

26 | tree(K, V) * t = ( tree(K, V) * ) malloc(sizeof(tree(K,V))); |
---|

27 | (*t){ key, value }; |
---|

28 | return t; |
---|

29 | } |
---|

30 | |
---|

31 | // // Helper function to print trees |
---|

32 | // forall(otype K | Comparable(K), otype V) |
---|

33 | // void printTree(tree * t, int level){ |
---|

34 | // if (empty(t)){ |
---|

35 | // return; |
---|

36 | // } |
---|

37 | |
---|

38 | // printTree(t->left, level+1); |
---|

39 | // printf("key: %d, value: %s, level: %d\n", t->key, t->value, level); |
---|

40 | // printTree(t->right, level+1); |
---|

41 | // } |
---|

42 | |
---|

43 | // // inorder traversal of t |
---|

44 | // // prints each key, followed by the value |
---|

45 | // forall(otype K | Comparable(K), otype V) |
---|

46 | // void printTree(tree(K, V) * t){ |
---|

47 | // printTree(t, 0); |
---|

48 | // } |
---|