В следующем коде я пытаюсь лучше понять, как работает рекурсия. Я всегда был немного смущен, что это действительно работает. Я хочу знать, какое значение фактически выполняет функция inorder() на каждом шаге. Откуда он получает эти значения 0,0,11,0,0,11,12,0,0,11 соответственно. Может ли кто-нибудь сказать мне логику? Это базовая программа обхода дерева дерева. Причина, по которой я пытаюсь понять эти результаты, состоит в том, что одна и та же логика каким-то образом используется для определения глубины дерева (я думаю), где при каждой рекурсии значение глубины увеличивается без инициализации.Возвращаемое значение рекурсивной функции
#include<stdio.h>
#include<stdlib.h>
struct node
{
int data;
struct node *left;
struct node *right;
};
struct node* newNode(int data)
{
struct node* node=(struct node*)malloc(sizeof(struct node));
node->data=data;
node->left=NULL;
node->right=NULL;
return node;
}
int inorder(struct node *temp) {
if (temp != NULL) {
printf("\nleft %d\n",inorder(temp->left));
printf("\n%d\n", temp->data);
printf("\nright %d\n",inorder(temp->right));
}
}
int main()
{
struct node *root=newNode(1);
root->left=newNode(2);
root->right=newNode(3);
root->left->left=newNode(4);
root->left->right=newNode(5);
inorder(root);
getchar();
return 0;
}
могли бы вы ответить на отредактированный вопрос –
@SumitCornelius Stackoverflow не работает таким образом, вы не должны изменять полностью существующий вопрос на другой вопрос - после того, как вы получили свой ответ. Если у вас есть другой вопрос, вы должны разместить его как новый вопрос (даже если это связано с предыдущим). Удачи! – alfasin