0

ご存知のように、再帰関数はそれを自己と呼ぶ関数であり、ベースケースを持つという特徴があります。これは、二分木のプレオーダートラバーサルのための関数です。これは再帰関数ですか?ベースケースがないと混乱します。

void pre_order(struct node* current){ // preorder traversal

    printf("%d\n",current->data);

    if(current->left != NULL){
        pre_order(current->left);
    }

    if(current->right !=NULL){
        pre_order(current->right);
    }
}
4

1 に答える 1

2

自分自身を呼び出すので、再帰関数です。それはとても簡単です。ここにもベースケースがありますが、おそらく少し隠されています。この二分木の葉に到達すると、左と右の両方の子がnullに等しくなるため、再帰呼び出しは発生しなくなります。それは少し隠されている私たちのベースケースです。

于 2012-10-27T10:00:03.767 に答える