#ifndef BASIC_TREE_H
#define BASIC_TREE_H

struct queue {
    struct node *node;
    struct queue *next;
};

struct queue *enqueue(struct queue *queue, struct node *node);
struct node *dequeue(struct queue **queue);
void queue_destroy(struct queue *queue);


struct node {
    int value;
    struct node *left;
    struct node *right;
};

struct node *insert(struct node *root, int value);
void delete_leaf(struct node *root, int value);
struct node *delete_node(struct node *root, int value);
void pretty_print(struct node *root);

#endif /* ! BASIC_TREE_H */