int lDepth = maxDepth (node-> left);int rDepth = maxDepth (node-> right); - PullRequest
0 голосов
/ 19 октября 2018

Я новичок в изучении концепции двоичного дерева.У меня проблема со следующим:

int lDepth = maxDepth(node->left); 
int rDepth = maxDepth(node->right);

В этом фрагменте кода, что такое

"maxDepth (node-> left);"

Что хранится в переменной 'LDepth' и то же самое со следующей строкой после каждого рекурсивного вызова - что хранится в 'lDepth' variable?

Я хотел бы получить как можно более конкретный ответ.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

maxDepth() - это рекурсивная функция, которая вызывается рекурсивно, пока не встретится NULL pointer, указывающий конец дерева.maxDepth(node->left) - это рекурсивный вызов функции maxDepth, где поддерево имеет корень в node->left.См. Иллюстрацию ниже

           node
           /  \
       l_node   r_node
       / \      /\ 
    left  1    3  right
(lDepth)          (rDepth)

l_node=node->left, поэтому вызывается maxDepth(l_node).Точно так же, r_node=node->right так называется maxDepth(r_node).

Надеюсь, это вам поможет.

0 голосов
/ 19 октября 2018

Из кода, который вы дали, я бы сказал, что lDepth хранит глубину left subtree, а rDepth хранит глубину right subtree, где node - корень дерева.Это верно для всех поддеревьев рекурсивно.

"maxDepth (node-> left);

Вы вызываете функцию maxDepth рекурсивно для вычисления глубины слеваподдерево с корнем node.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...