@@ -20,10 +20,15 @@ typedef ngx_int_t ngx_rbtree_key_int_t;
20
20
typedef struct ngx_rbtree_node_s ngx_rbtree_node_t ;
21
21
22
22
struct ngx_rbtree_node_s {
23
+ // unsigned long 类型的 key
23
24
ngx_rbtree_key_t key ;
25
+ // 左孩子节点
24
26
ngx_rbtree_node_t * left ;
27
+ // 右孩子节点
25
28
ngx_rbtree_node_t * right ;
29
+ // 父亲节点
26
30
ngx_rbtree_node_t * parent ;
31
+ // 节点颜色,0 为黑色,1 为红色
27
32
u_char color ;
28
33
u_char data ;
29
34
};
@@ -35,8 +40,11 @@ typedef void (*ngx_rbtree_insert_pt) (ngx_rbtree_node_t *root,
35
40
ngx_rbtree_node_t * node , ngx_rbtree_node_t * sentinel );
36
41
37
42
struct ngx_rbtree_s {
43
+ // 根节点
38
44
ngx_rbtree_node_t * root ;
45
+ // 哨兵节点,即 NULL
39
46
ngx_rbtree_node_t * sentinel ;
47
+ // 向红黑树中插入节点的方法,我们可自定义实现
40
48
ngx_rbtree_insert_pt insert ;
41
49
};
42
50
@@ -50,10 +58,13 @@ struct ngx_rbtree_s {
50
58
51
59
void ngx_rbtree_insert (ngx_rbtree_t * tree , ngx_rbtree_node_t * node );
52
60
void ngx_rbtree_delete (ngx_rbtree_t * tree , ngx_rbtree_node_t * node );
61
+
62
+ // nginx 所实现的 2 个向红黑树中添加节点的方法
53
63
void ngx_rbtree_insert_value (ngx_rbtree_node_t * root , ngx_rbtree_node_t * node ,
54
64
ngx_rbtree_node_t * sentinel );
55
65
void ngx_rbtree_insert_timer_value (ngx_rbtree_node_t * root ,
56
66
ngx_rbtree_node_t * node , ngx_rbtree_node_t * sentinel );
67
+
57
68
ngx_rbtree_node_t * ngx_rbtree_next (ngx_rbtree_t * tree ,
58
69
ngx_rbtree_node_t * node );
59
70
0 commit comments