rjp/include/tree.h
2020-01-12 00:18:45 -08:00

33 lines
880 B
C

#ifndef RJP_TREE_H
#define RJP_TREE_H
#include "rjp.h"
#define RJP_TREE_SUCCESS 0
#define RJP_TREE_ERR_NULL_ROOT 1
#define RJP_TREE_ERR_NOT_FOUND 2
typedef struct RJP_object_member{
RJP_string name;
RJP_value value;
}RJP_object_member;
struct RJP_tree_node;
typedef struct RJP_tree_node RJP_tree_node;
struct RJP_tree_node{
RJP_tree_node* parent;
RJP_tree_node* left;
RJP_tree_node* right;
RJP_object_member data;
unsigned color:1;
};
RJP_tree_node* irjp_new_node(RJP_object_member value);
RJP_tree_node* irjp_insert_value(RJP_tree_node* root, RJP_object_member value, int* status);
RJP_tree_node* irjp_remove_value(RJP_tree_node* root, RJP_object_member value, int* status);
RJP_tree_node* irjp_search_value(RJP_tree_node* root, RJP_object_member value);
void irjp_dbg_print_tree(RJP_tree_node* root);
void irjp_dbg_print_tree_bfs(RJP_tree_node* root);
#endif