embox

Форк
0
/
tree_lookup.c 
43 строки · 777.0 Байт
1
/**
2
 * @file
3
 * @brief Implementation of methods in util/tree.h
4
 *
5
 * @date Oct 8, 2011
6
 * @author Avdyukhin Dmitry
7
 */
8

9
#include <assert.h>
10
#include <stddef.h>
11

12
#include <lib/libds/dlist.h>
13
#include <lib/libds/tree.h>
14

15
struct tree_link *tree_lookup_child(struct tree_link *node,
16
    tree_predicate_t predicate, void *arg) {
17
	struct tree_link *link;
18

19
	assert(node && predicate);
20

21
	dlist_foreach_entry(link, &node->children, list_link) {
22
		if (predicate(link, arg)) {
23
			return link;
24
		}
25
	}
26

27
	return NULL;
28
}
29

30
struct tree_link *tree_lookup(struct tree_link *node,
31
    tree_predicate_t predicate, void *arg) {
32
	struct tree_link *link;
33

34
	assert(node && predicate);
35

36
	tree_postorder_traversal_link(link, node) {
37
		if (predicate(link, arg)) {
38
			return link;
39
		}
40
	}
41

42
	return NULL;
43
}
44

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.