mirror of
https://gitee.com/apaki/unicstl.git
synced 2025-05-18 03:51:35 +08:00
70 lines
2.0 KiB
C
70 lines
2.0 KiB
C
#ifndef _TREE_H_
|
|
#define _TREE_H_
|
|
|
|
#include "common.h"
|
|
|
|
#if AVLTREE == 1 || RAVLTREE == 1
|
|
// typedef int tree_data_t;
|
|
|
|
typedef struct _tree_node_t
|
|
{
|
|
tree_data_t data;
|
|
struct _tree_node_t * left;
|
|
struct _tree_node_t * right;
|
|
struct _tree_node_t * parent;
|
|
int32_t balance; // balance of avl tree
|
|
}tree_node_t, *ptree_node_t;
|
|
|
|
|
|
typedef struct _tree_t
|
|
{
|
|
struct _tree_node_t * tree;
|
|
uint32_t size;
|
|
}tree_t, *ptree_t;
|
|
|
|
typedef void (*tree_data_disp_t)(tree_data_t data);
|
|
|
|
#endif
|
|
|
|
|
|
#if RAVLTREE == 1
|
|
bool tree_init(ptree_node_t *head);
|
|
void tree_destroy(ptree_node_t *head);
|
|
bool tree_empty(ptree_node_t head);
|
|
void tree_clear(ptree_node_t head);
|
|
uint32_t tree_get_size(ptree_node_t head);
|
|
|
|
bool tree_insert(ptree_node_t head, tree_data_t data);
|
|
bool tree_delete(ptree_node_t head, tree_data_t data);
|
|
bool tree_get_min(ptree_node_t head, tree_data_t *data);
|
|
bool tree_get_max(ptree_node_t head, tree_data_t *data);
|
|
|
|
void tree_traversal_depth_preorder(ptree_node_t head, tree_data_disp_t tree_data_disp);
|
|
void tree_traversal_depth_inorder(ptree_node_t head, tree_data_disp_t tree_data_disp);
|
|
//void tree_traversal_depth_postorder(ptree_node_t head, tree_data_disp_t tree_data_disp);
|
|
//void tree_traversal_breadth(ptree_node_t head, tree_data_disp_t tree_data_disp);
|
|
|
|
#endif
|
|
|
|
#if AVLTREE == 1
|
|
bool tree_init(ptree_t *head);
|
|
void tree_destroy(ptree_t *head);
|
|
bool tree_empty(ptree_t head);
|
|
void tree_clear(ptree_t head);
|
|
uint32_t tree_get_size(ptree_t head);
|
|
|
|
bool tree_insert(ptree_t head, tree_data_t data);
|
|
bool tree_delete(ptree_t head, tree_data_t data);
|
|
bool tree_get_min(ptree_t head, tree_data_t *data);
|
|
bool tree_get_max(ptree_t head, tree_data_t *data);
|
|
|
|
void tree_traversal_depth_preorder(ptree_t head, tree_data_disp_t tree_data_disp);
|
|
void tree_traversal_depth_inorder(ptree_t head, tree_data_disp_t tree_data_disp);
|
|
void tree_traversal_depth_postorder(ptree_t head, tree_data_disp_t tree_data_disp);
|
|
void tree_traversal_breadth(ptree_t head, tree_data_disp_t tree_data_disp);
|
|
#endif
|
|
|
|
|
|
#endif // _TREE_H_
|
|
|