0
我有一個類節點,它有Node *左和Node *右作爲變量。現在我必須建立哈夫曼樹的功能如下霍夫曼樹創建C++
int x = pQueue.size();
for(int i=0;i<x-1;i++){
Node *z = new Node;
z->left = &pQueue.extractMin();
z->right = &pQueue.extractMin();
z->setchar(NULL);
z->setfrequency(z->left->getFrequency() + z->right->getFrequency());
pQueue.insert(z);
}
這是標準的函數來創建哈夫曼樹。但問題是這樣的。最初當一個新的Node * z被創建並且它的左邊和右邊的子被分配時,在循環的下一個執行期間,z的左邊和右邊的子被重新分配,並且我失去了最初分配的值。我的印象是,在循環的每次執行過程中,都會創建一個新對象,並且其左側和右側的子對象將具有不同的內存位置。但是這沒有發生。每次循環執行時如何創建一個新對象?
這裏是我得到
如果使用頻率14檢查節點在第一次執行作爲其左,右的孩子被分配一定的存儲位置。然而在下一次執行中,頻率14節點的左右子節點爲空,並且頻率爲25的子節點被設置爲前一個位置。我希望它們在第一輪頻率14節點和頻率爲25節點的新位置分配相同。
給出一個預期的結果和你得到的結果的樣本? – uba 2013-03-12 04:36:34
我剛添加了照片和我的期望 – Maverick 2013-03-12 04:45:53
'pQueue'的類型是什麼? – uba 2013-03-12 05:44:04