Balanced search tree로 많이 쓰이는 Red-black tree (이하 RB tree)를 C 언어로 구현하는 과제입니다. 구현하는 추상 자료형 (ADT: abstract data type)은 ordered set, multiset 입니다.
https://github.com/Yoosun-Chang/rbtree-lab
다음 기능들을 수행할 수 있도록 RB tree를 구현합니다.
tree = new_tree()
: RB tree 구조체 생성
delete_tree(tree)
: RB tree 구조체가 차지했던 메모리 반환
tree_insert(tree, key)
: key 추가
ptr = tree_find(tree, key)
tree_erase(tree, ptr)
: RB tree 내부의 ptr로 지정된 node를 삭제하고 메모리 반환
ptr = tree_min(tree)
: RB tree 중 최소 값을 가진 node pointer 반환
ptr = tree_max(tree)
: 최대값을 가진 node pointer 반환
tree_to_array(tree, array, n)
src/rbtree.c
이외에는 수정하지 않고 test를 통과해야 합니다.make test
를 수행하여 Passed All tests!
라는 메시지가 나오면 모든 test를 통과한 것입니다.