0

3 つのフィールドを持つ N 個の構造体でネストされた、特定の 1xN フィールドの構造体配列があります。

  • id: 一意の数値識別子
  • name: 一意の英数字の名前
  • parent_id: 親子関係id

親関係は によって与えられparent_id、この現在の ID がネストされている別の ID を参照しid、現在のタグをサブタグにします。はparent_id空白にすることもできます。これは、現在の ID がルート レベルにあり、他の ID の下にネストされていないことを意味します。例:

tags = 
    field1: [1x1 struct]
    field2: [1x1 struct]

tags.field1 = 
           id: 1
         name: 'tag1'
    parent_id: []


tags.field2 = 
           id: 2
         name: 'tag2'
    parent_id: 1

tags上記のような構造体を使用すると、ツリー ダイアグラムfield2にネストされます。field1これが問題につながります。指定された形式のデータを効率的に再編成して、テキストベースのツリー図を生成し、さらに処理するためのデータを提供するにはどうすればよいですか?

私が試したアプローチの 1 つは、次のように、ネストされた構造体全体に再編成することでした。

tags_sorted = 
    field1: [1x1 struct]

tags_sorted.id_1 = 
           id: 1
         name: 'tag1'
    parent_id: []
         id_2: [1x1 struct]

tags_sorted.id_1.id_2 = 
           id: 2
         name: 'tag2'
    parent_id: 1

サブタグのサブタグ (サブタグ、サブタグなど) の数が増えるにつれて、ネストがますます深くなります。無制限のネスト数を処理できるアルゴリズムを思い付くことができませんでした。

そのためのアイデアはありますか?残念ながら、 の入力データ構造はtags変更できません。

4

0 に答える 0