删除旧代码并添加获取最大值和最小值的函数

This commit is contained in:
建峰 2024-06-25 13:16:04 +08:00
parent 82c5a881e7
commit 18677a64cd
4 changed files with 42 additions and 1456 deletions

View File

@ -13,6 +13,8 @@
"stdio.h": "c",
"tree.h": "c",
"deque.h": "c",
"config.h": "c"
"config.h": "c",
"limits": "c",
"*.tcc": "c"
}
}

View File

@ -13,67 +13,6 @@
#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
struct _tree_node
{
void *obj;
@ -110,8 +49,8 @@ struct _tree
bool (*rebalance)(struct _tree* self, struct _tree_node* root);
int32_t (*height)(struct _tree* self, struct _tree_node* root);
bool (*min)(struct _tree* self, void** obj);
bool (*max)(struct _tree* self, void** obj);
bool (*min)(struct _tree* self, void* obj);
bool (*max)(struct _tree* self, void* obj);
bool (*clear)(struct _tree* self);
bool (*empty)(struct _tree* self);

1419
src/tree.c

File diff suppressed because it is too large Load Diff

View File

@ -306,6 +306,16 @@ void test_tree_num(void)
printf("\n");
}
printf("----- max -----\n");
tree->max(tree, &temp);
tree->print_obj(&temp);
printf("\n");
printf("----- min -----\n");
tree->min(tree, &temp);
tree->print_obj(&temp);
printf("\n");
printf("----- tree -----\n");
tree->clear(tree);
if(tree->empty(tree))