2012-04-14 64 views
0

二叉樹的節點有兩個指針,'left'和'right',以及兩個數據字段'leftcount'和'rightcount'。 'leftcount'指定節點左側子樹中的節點數量,'rightcount'指定節點右側子樹中的節點數量。編寫一個算法來填充樹的所有節點的數據字段。填充樹的所有節點的數據字段

我在接受採訪時被問到這個問題。我想出了一個基於樹的後序遍歷的解決方案。有人可以請指導我這一點。

+1

如果你已經有了一個解決方案,那麼什麼是你的SO觀衆質疑? – 2012-04-14 18:44:28

+0

@OliCharlesworth:謝謝你的回覆。我有人問我是否可以用我提出的其他方式來做這個帖子。 – user1225752 2012-04-15 01:19:56

回答

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; 
}