深入了解逻辑层次结构

时间:2013-07-04 17:43:43

标签: algorithm record hierarchy hierarchical-data

我有代表层次结构的数据

|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   |

1 个答案:

答案 0 :(得分: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);
}