Я пытался решить проблему в дереве, И застрял в рекурсии и написал код. Но я не могу понять, почему он это дает! кто-то поможет, как код дает этот выход Моя программа х = 0, у = 0Рекурсия в двоичном дереве
int height1(node *root,int x,int y)
{
int val;
if(root==NULL)
return 1;
else
{
x=x+height1(root->left,x,y);
y=y+height1(root->right,x,y);
printf("x=%d and y=%d %d\n",x,y,root->data);
if(x>y)
return x;
else
return y;
}
это просто грубая работа, чтобы понять поток рекурсии. Ввод дерева траверса 50 40 70 45 30 44 48 и значение
x y root->data
1 1 30
2 1 44
4 1 48
3 4 45
1 4 40
5 1 70
4 5 50
, почему это происходит в этом случае, на моем пути он должен добавить у и х каждый раз, так что значение должно увеличиваться,
Прошу дать мне совет, потому что каждый раз, когда я решаю проблему с деревом, я всегда застрял в рекурсии, может ли кто-нибудь предложить, что такое правильный подход.
Я понимаю, что для определения базового состояния важно, и я знаю его, как найти. Но не могу понять, как это произошло.
Я знаю, что здесь есть много опытных программистов , и я хочу, чтобы, пожалуйста, дайте мне несколько советов, потому что я думаю, что они также столкнулись с некоторыми проблемами в рекурсии, так как они решают эту проблему. Как они решают рекурсивную проблему, когда любой новый приходит ,
Должен ли я обратиться к какой-либо книге, или я должен просто решить некоторые программы. Так что, пожалуйста, я хочу ваш совет, чтобы я мог стать хорошим в этом.
это было бы намного проще понять, если вы по крайней мере объяснили, что это (неполный) код должен делать – Paul
Это просто грубый код, чтобы получить поток программы , когда я пытался получить высоту дерева и застрял, чтобы понять, что написал этот грубый код. –