2013-07-04 2 views
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 

мне нужно реализовать некоторую функцию или алгоритм prefirible что allowme до создать иерархическую структуру и получить глубину каждого узла в соответствии с логической структурой. Я хочу получить эту информацию.

|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

Что глубоко в каждой записи? Это где дерево может рухнуть? – Shivam

+0

Извините, я немного редактирую. –

ответ

1

Учитывая вы имеете node со ссылкой на parent_node то функция deep может осуществляться следующим образом:

(Каждый узел имеет свойство ИД & данных)

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); 
} 
Смежные вопросы