私はこのように書き階層データを持っている:再帰の有無にかかわらず非バイナリツリーを構築するには?
+----------------------+-------+
| 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やプラズマテレビでの子です。 FLASHはMP3プレーヤーの子供です。 MP3プレイヤー、CDプレイヤー、2ウェイラジオはポータブル電子の子供です。あなたはドリルを手に入れます。
今、ツリーを構築するために、Idとその子を含むNodeという構造体があります。このように:の子である人を見つけることは容易であるので
struct Node
{
int id;
list<Node*> children;
}
各項目は、行番号(ELECTRONICS = 0、テレビ= 1など)IDによって識別されますノード。
これは私が構築しようとしているツリーです。このツリーはバイナリではありません。再帰を適用するのは簡単な考えのようには見えません。私が間違っているなら私を訂正してください。
どうすればいいですか?助けて!
再帰では、2つ以上のパスを探索する場所が簡単になります。したがって、2つ以上の枝は再帰を容易に選択する。代替アプローチ(反復)では、進行状況を手動で追跡する必要があります(つまり、スタックが再帰バージョンで行っている作業を行う)。しかし、この状況では、再帰は必要ありません。 –