如何构建一个有或没有递归的非二叉树?

Mic*_*ith 5 c++ algorithm tree recursion

我有一个分层数据,如下所示:

+----------------------+-------+
| 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 |
+----------------------+-------+
Run Code Online (Sandbox Code Playgroud)

TUBE,LCD和PLASMA是TELEVISIONS的儿童.FLASH是MP3播放器的孩子.MP3播放器,CD播放器和2路无线电是PORTABLE ELECTRONICS的子女.你得到了演练.

现在,我有一个包含其Id及其子节点的结构Node,依此类推,以构建一个树.像这样:

struct Node
{
   int id;
   list<Node*> children;
}
Run Code Online (Sandbox Code Playgroud)

每个项目都由一个ID标识,ID是行号(ELECTRONICS = 0,TELEVISIONS = 1,依此类推),因此很容易找出谁是节点的子节点.

这是我正在尝试构建的树.您可以看到,此树不是二进制的.所以应用递归似乎不是一个简单的想法.如我错了请纠正我.

那么我该怎么做呢?救命!

And*_*rsK 4

您应该使用指向节点的指针,否则您将在每个级别的树中复制数据。

我还建议您使用 enum 而不是 int id,它使代码更清晰一些。

使用非二叉树的递归没有问题,您只需要left/right在递归函数中调用list<Node*>.