The Algorithm of DFS :
tree_type
dfs_stack(tree_type tree, BOOL (*predicate)(tree_type))
{
stack_type stack = create_stack();
tree_type guess;
push(tree, stack);
while (empty_stack(stack) == FALSE)
{
guess = pop(stack);
if (empty_tree(guess) == TRUE)
continue;
if (predicate(guess) == TRUE)
return guess;
push(left_child(guess), stack);
push(right_child(guess), stack);
}
return the_empty_tree;
}
|
The Algorithm of BFS :
tree_type
bfs_queue(tree_type tree, BOOL (*predicate)(tree_type))
{
queue_type queue = create_queue();
tree_type guess;
enqueue(tree, queue);
while (empty_(queue) == FALSE)
{
guess = dequeue(queue);
if (empty_tree(guess) == TRUE)
continue;
if (predicate(guess) == TRUE)
return guess;
enqueue(left_child(guess), queue);
enqueue(right_child(guess), queue);
}
return the_empty_tree;
}
|