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,依此类推),因此很容易找出谁是节点的子节点.
这是我正在尝试构建的树.您可以看到,此树不是二进制的.所以应用递归似乎不是一个简单的想法.如我错了请纠正我.
那么我该怎么做呢?救命!
您应该使用指向节点的指针,否则您将在每个级别的树中复制数据。
我还建议您使用 enum 而不是 int id,它使代码更清晰一些。
使用非二叉树的递归没有问题,您只需要left/right在递归函数中调用list<Node*>.