Как построить небинарное дерево с рекурсией или без нее?

У меня есть иерархические данные, которые выглядят так:

+----------------------+-------+
| 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, и так далее), поэтому легко выяснить, кто является дочерними элементами узла.

Вот дерево, которое я пытаюсь построить. Это дерево не является бинарным, как вы можете видеть. Поэтому применение рекурсии не кажется простой идеей. Поправьте меня, если я ошибаюсь.

Итак, как я могу это сделать? Помогите!

5
задан Michael Eilers Smith 30 January 2012 в 06:44
поделиться