2012-04-14 3 views
0

バイナリツリーのノードには2つのポインタ 'left'と 'right'と2つのデータフィールド 'leftcount'と 'rightcount'があります。 'leftcount'はノードの左サブツリーのノード数を指定し、 'rightcount'はノードの右サブツリーのノード数を指定します。ツリーのすべてのノードのデータフィールドを設定するアルゴリズムを記述します。ツリーのすべてのノードのデータフィールドに値を設定します

私はインタビューでこの質問をしました。私はツリーのポストオーダートラバーサルに基づいた解決策を考え出しました。誰かが私にこれを案内してくれますか?

+1

あなたは既に解決策を持っている場合は、SOの聴衆のためにあなたの質問は何ですか? –

+0

@OliCharlesworth:お返事ありがとうございます。私は、私が提案した方法以外の方法でそれをやり遂げることができるかどうか尋ねられたので、この投稿を入れました。 – user1225752

答えて

1

これは動作するはずです(私は信じている):

int populateCounters(Node* node) { 
    if(node == NULL) return 0; 
    node->leftCount = populateCounters(node->left); 
    node->rightCount = populateCounters(node->right); 
    return node->leftCount + node->rightCount + 1; 
} 
関連する問題