Сериализация троичного дерева в кл
Я пишу троичное дерево для поиска строк в c.
До сих пор я могу хранить строки и проверять, существует ли строка.
Пример вставки
Node *node_link(Node *this, char *line) {
26 if(!this) {
27 this = node_create(*line);
28 }
29 if(*line < this->ch) {
30 this->left = node_link(this->left, line);
31 } else if(*line == this->ch) {
32 if(*(++line) == 0) {
33 this->there = TRUE;
34 return this;
35 } else {
36 this->mid = node_link(this->mid, line);
37 }
38 } else {
39 this->right = node_link(this->right, line);
40 }
41 return this;
42 }
Мне нужно вернуть строки, которые я вставил. Например, если я вставил
hat
cat
catpost
tent
tents
square
squarish
Я должен быть в состоянии извлечь список с теми же строками. Я не понимаю, если я делаю обход дерева (DFS). Как я могу получить список сохраненных предметов?
Пример обхода
void node_walk_link(Node *this, char *line) {
44 if(this) {
45 node_walk_link(this->left, line);
46 node_walk_link(this->right, line);
47 node_walk_link(this->mid, line_push(line, this->ch, 0));
48 }
49 }
Также как найти объединение двух тройных деревьев? То есть предметы из обоих деревьев без дубликатов.