У меня есть иерархические данные, которые выглядят так:
+----------------------+-------+
| name | depth |
+----------------------+-------+
| ELECTRONICS | 0 |
| TELEVISIONS | 1 |
| TUBE | 2 |
| LCD | 2 |
| PLASMA | 2 |
| PORTABLE ELECTRONICS | 1 |
| MP3 PLAYERS | 2 |
| FLASH | 3 |
| CD PLAYERS | 2 |
| 2 WAY RADIOS | 2 |
+----------------------+-------+
TUBE, LCD и PLASMA являются дочерними элементами TELEVISIONS. FLASH является дочерним элементом MP3 PLAYERS. MP3 PLAYERS, CD PLAYERS и 2 WAY RADIOS - дети PORTABLE ELECTRONICS. Вы поняли суть.
Теперь у меня есть структура Node, которая содержит свой Id и его дочерние элементы, и так далее, как построить дерево. Вот так:
struct Node
{
int id;
list<Node*> children;
}
Каждый элемент идентифицируется ID, который является номером строки (ЭЛЕКТРОНИКА=0, ТЕЛЕВИЗОРЫ=1, и так далее), поэтому легко выяснить, кто является дочерними элементами узла.
Вот дерево, которое я пытаюсь построить. Это дерево не является бинарным, как вы можете видеть. Поэтому применение рекурсии не кажется простой идеей. Поправьте меня, если я ошибаюсь.
Итак, как я могу это сделать? Помогите!