/* 6. array로 변환 */
// 트리의 노드들을 배열에 저장하는 함수
int rbtree_to_array(const rbtree *t, key_t *arr, const size_t n) {
  // 트리가 비어있지 않다면 중위순회 시작
  if (t->root != t->nil) {
    inorder(t->root, t, arr,0);
  }
  return 0;
}

// 중위 순회하며 트리의 노드들을 배열에 저장하는 함수
int inorder(node_t *x, const rbtree *t, key_t *arr, int i){
  if(x == t->nil) // 현재 노드가 nil인 경우, 종료
    return i;
  i = inorder(x->left ,t,arr,i); // 왼쪽 서브트리를 중위 순회하여 배열에 저장하고, 배열 인덱스를 업데이트
  arr[i++] = x->key; // 현재 노드의 키 값을 배열에 저장하고, 배열 인덱스를 증가
  i = inorder(x->right,t,arr,i); // 오른쪽 서브트리를 중위 순회하여 배열에 저장하고, 배열 인덱스를 업데이트
  return i;
}