我有代表层次结构的数据
|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 |
答案 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);
}