Repository navigation
Expand file tree
/
Copy path2-d_tree.h
More file actions
53 lines (44 loc) · 2.05 KB
/
Copy path2-d_tree.h
File metadata and controls
53 lines (44 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/* 2-d_tree.h -- 2-d树头文件 */
#define ODD 1
#define EVEN 0
#define TRUE 1
#define FALSE 0
/* 数据类型定义 */
typedef int Item ;
typedef struct node
{
int layer ;
Item key1, key2 ;
struct node * left ;
struct node * right ;
} Node ;
typedef Node * Tree ;
/* 接口函数声明 */
/* 操作: 初始化一个2-d树 */
/* 操作前: ptree 指向一棵2-d树 */
/* 操作后: 该树被初始化为空树 */
void InitializeTree (Tree * const ptree) ;
/* 操作: 确定一棵2-d树是否为空 */
/* 操作前: ptree 指向一棵已初始化的2-d树 */
/* 操作后: 如果该树为空, 函数返回1; 否则函数返回0 */
int TreeIsEmpty (const Tree * const ptree) ;
/* 操作: 返回一棵2-d树最左侧的结点的指针 */
/* 操作前: ptree 指向一棵已初始化的2-d树 */
/* 操作后: 返回该树中最左侧的结点的指针 */
Node * FindMin (const Tree * const ptree) ;
/* 操作: 返回一棵2-d树最右侧结点的指针 */
/* 操作前: ptree 指向一棵已初始化的2-d树 */
/* 操作后: 返回该树中最右侧结点的指针 */
Node * FindMax (const Tree * const ptree) ;
/* 操作: 向树中添加一个数据为指定数据的结点 */
/* 操作前: ptree 指向一棵已初始化的2-d树, pkey1 指向第一个关键字, pkey2 指向第二个关键字 */
/* 操作后: 如果可能, 一个关键字1同 *pkey1 相同, 关键字2同 *pkey2 相同的结点被添加到树中, 函数返回1; 否则函数返回0 */
int Insert (Tree * const ptree, const Item * const pkey1, const Item * const pkey2) ;
/* 操作: 以中序将一个函数作用于树中满足low1 <= key1 <= high1 && low2 <= key2 <= high2的所有结点 */
/* 操作前: ptree 指向一棵已初始化的2-d树, low1, high1, low2, high2代表范围, pfun 指向一个没有返回值, 接受一个指向Item类型的指针的函数 */
/* 操作后: 以中序将一个函数作用于树中满足low1 <= key1 <= high1 && low2 <= key2 <= high2的所有结点 */
void InorderSeekTraversal (const Tree * const ptree, const Item low1, const Item low2, const Item high1, const Item high2, void (* pfun) (const Item * const pkey1, const Item * const pejy2)) ;
/* 操作: 从2-d树中删除一个数据为指定数据的结点 */
/* 操作前: ptree 指向一棵已初始化的2-d树, pkey1 指向关键字1, peky2 指向关键字2 */
/* 操作后: 如果可能, 从树中删除该结点并返回新树; 否则返回原树 */
Tree Delete (Tree * const ptree, const Item * const pkey1, const Item * const pkey2) ;