0

階層構造を表すデータがあります

|id|parent_id|data|
|1 |0        |cat1|
|2 |1        |cat2|
|3 |4        |cat3|
|4 |5        |cat4|   
|5 |0        |cat5|

このような階層構造を表すもの

1
|_2
|
5
|_4
  |_3

階層構造を作成し、論理構造に従ってすべてのノードの深さを取得できる機能またはアルゴリズムを実装する必要があります。つまり、この情報を取得します。

|id|parent_id|data|deep|
|1 |0        |cat1|0   |
|2 |1        |cat2|1   |
|3 |4        |cat3|2   |
|4 |5        |cat4|1   |
|5 |0        |cat5|0   |
4

1 に答える 1

1

nodeを参照したことを考えるとparent_node、関数deepは次のように実装できます。

(各ノードには id & data プロパティがあります)

int deep(node *n) {
    /* deep of root node is zero and that's our base case */
    if(n->parent_node.id == 0)
        return 0;
    return 1 + deep(n->parent_node);
}
于 2013-07-04T18:13:48.820 に答える