このmaxDepthコードを理解するのに問題があります。どんな助けでもいただければ幸いです。これが私が従ったスニペットの例です。
int maxDepth(Node *&temp)
{
if(temp == NULL)
return 0;
else
{
int lchild = maxDepth(temp->left);
int rchild = maxDepth(temp->right);
if(lchild <= rchild)
return rchild+1;
else
return lchild+1;
}
}
基本的に、私が理解しているのは、関数が最後のノードに到達するまで、関数が(左右のケースごとに)再帰的に自分自身を呼び出すということです。一度実行すると、0を返し、次に0+1を実行します。その場合、前のノードは1+1です。次は2+1です。左の子が3つあるbstがある場合、int lchildは3を返し、余分な+1がルートになります。だから私の質問は、これらすべての+1はどこから来るのかということです。最後のノードで0を返しますが、左右の子ノードを上るときに0+1などを返すのはなぜですか。理由がわかりません。私はそれがそれをすることを知っています、しかしなぜですか?