我有代表层次结构的数据
|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 |
最佳答案
考虑到您的 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);
}
关于algorithm - 深入了解逻辑层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17475820/