遍历中将node重命名为target更容易理解

This commit is contained in:
建峰 2025-04-27 11:35:25 +08:00
parent 6054e712e6
commit 7b672b6e77

View File

@ -1256,9 +1256,8 @@ static const void* tree_iter_next(struct _iterator* iter)
tree_t self = (tree_t)iter->_parent; tree_t self = (tree_t)iter->_parent;
void *obj = NULL; void *obj = NULL;
self->_iter._cur += 1;
struct _tree_node* cur_node = self->_iter._cur_node; struct _tree_node* cur_node = self->_iter._cur_node;
struct _tree_node* target_node = NULL;
switch (self->_order) switch (self->_order)
{ {
case ORDER_PRE: case ORDER_PRE:
@ -1271,11 +1270,10 @@ static const void* tree_iter_next(struct _iterator* iter)
{ {
if (cur_node != NULL) if (cur_node != NULL)
{ {
node = cur_node; target_node = cur_node;
self->stack->push(self->stack, &cur_node); self->stack->push(self->stack, &cur_node);
cur_node = cur_node->left; cur_node = cur_node->left;
break; break;
} }
else else
@ -1291,11 +1289,10 @@ static const void* tree_iter_next(struct _iterator* iter)
{ {
if (cur_node != NULL) if (cur_node != NULL)
{ {
node = cur_node; target_node = cur_node;
self->stack->push(self->stack, &cur_node); self->stack->push(self->stack, &cur_node);
cur_node = cur_node->right; cur_node = cur_node->right;
break; break;
} }
else else
@ -1305,19 +1302,10 @@ static const void* tree_iter_next(struct _iterator* iter)
} }
} }
} }
if (node == NULL)
{
return NULL;
}
self->_iter._cur_node = cur_node;
obj = node->obj;
}break; }break;
case ORDER_IN: case ORDER_IN:
case ORDER_IN_R: case ORDER_IN_R:
{ {
struct _tree_node* node = NULL;
if (self->_order == ORDER_IN) if (self->_order == ORDER_IN)
{ {
while (!self->stack->empty(self->stack) || cur_node != NULL) while (!self->stack->empty(self->stack) || cur_node != NULL)
@ -1330,8 +1318,8 @@ static const void* tree_iter_next(struct _iterator* iter)
else else
{ {
self->stack->pop(self->stack, &cur_node); self->stack->pop(self->stack, &cur_node);
target_node = cur_node;
node = cur_node;
cur_node = cur_node->right; cur_node = cur_node->right;
break; break;
} }
@ -1349,20 +1337,13 @@ static const void* tree_iter_next(struct _iterator* iter)
else else
{ {
self->stack->pop(self->stack, &cur_node); self->stack->pop(self->stack, &cur_node);
target_node = cur_node;
node = cur_node;
cur_node = cur_node->left; cur_node = cur_node->left;
break; break;
} }
} }
} }
if (node == NULL)
{
return NULL;
}
self->_iter._cur_node = cur_node;
obj = node->obj;
}break; }break;
case ORDER_POST: case ORDER_POST:
case ORDER_POST_R: case ORDER_POST_R:
@ -1370,9 +1351,7 @@ static const void* tree_iter_next(struct _iterator* iter)
if (!self->stack->empty(self->stack)) if (!self->stack->empty(self->stack))
{ {
self->stack->pop(self->stack, &cur_node); self->stack->pop(self->stack, &cur_node);
target_node = cur_node;
self->_iter._cur_node = cur_node;
obj = cur_node->obj;
} }
}break; }break;
case ORDER_BREADTH: case ORDER_BREADTH:
@ -1382,9 +1361,7 @@ static const void* tree_iter_next(struct _iterator* iter)
if (!queue->empty(queue) && cur_node != NULL) if (!queue->empty(queue) && cur_node != NULL)
{ {
queue->pop(queue, &cur_node); queue->pop(queue, &cur_node);
target_node = cur_node;
self->_iter._cur_node = cur_node;
obj = cur_node->obj;
if (self->_order == ORDER_BREADTH) if (self->_order == ORDER_BREADTH)
{ {
@ -1415,6 +1392,9 @@ static const void* tree_iter_next(struct _iterator* iter)
}break; }break;
} }
self->_iter._cur_node = cur_node;
obj = target_node->obj;
self->_iter._cur += 1;
return obj; return obj;
} }