lektsii_OP / T15
.pdfvoid AddNodes (node **сurrent, int an);
{ node *tmp; |
|
|
int nl, nr; |
|
|
if (an = = 0) |
|
// вершин для розміщення нема |
current = NULL; |
|
// формуємо порожнє посилання |
else |
|
|
{ nl = an / 2; |
// кількість вершин ліворуч |
|
nr = an - nl - 1; |
|
// кількість вершин праворуч |
tmp = new node; |
|
// створення кореня піддерева |
AddNodes (& tmp->left, nl) |
// створення лівого піддерева |
|
AddNodes (& tmp->right, nr); |
//створення правого піддерева |
|
current = tmp; |
|
// повернення адреси створеного кореня |
} |
|
|
} |
|
|
Запуск процесу побудови, зазвичай, виконується з головної програми за допомогою виклику AddNodes (&root, n). У цьому виклику фактичний параметр n обов'язково повинен мати конкретне значення, наприклад - задану користувачем кількість вершин в дереві, що будується. Однак, перший фактичний параметр root, будучи вихідним, отримає своє значення лише після відпрацювання всіх рекурсивних викликів, при поверненні в головну програму.
61
