我無法理解這個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。如果有三個左邊的孩子,int lchild將返回3.並且額外的+1是根。所以我的問題是,所有這些+1從哪裏來。它在最後一個節點返回0,但爲什麼當它向左/向右的子節點上升時,它會返回0 + 1等等?我不明白爲什麼。我知道它做到了,但爲什麼?
Euh,因爲如果有一個新節點,那麼深度是前一個加號,也許? – 2012-10-22 16:32:11