2013-10-26 87 views
0

我想創建一個哈夫曼樹,所以我創建了一個鏈表結構。我試圖自動打印出頻率,而不是以下方式。鏈接列表數據結構

cout << root->left->frequency << endl; 
cout << root->left->left->frequency << endl; 
cout << root->left->left->left->frequency << endl; 
cout << root->left->left->left->left->frequency << endl; 

如何使用for循環或其他方法打印出以下內容?我不想繼續添加left->來訪問下一個。

萬一結構需要

struct binaryTreeNode 
{ 
string binarycode; 
char letter; 
int frequency; 
int level; 

binaryTreeNode *left; 
binaryTreeNode *right; 
binaryTreeNode() 
{ 
    binarycode = ""; 
    frequency = 1; 
    level = 1; 
    letter = NULL; 
    left = NULL; 
    right = NULL; 
} 
}; 

提前感謝!

回答

0

假設你已經在正確的樹建,這應該打印整個左邊鏈,直至到達葉 -

binaryTreeNode *p = root; 
while (p->left != NULL) { 
    p = p->left; 
    cout << p->frequency << endl; 
} 

,或者如果你想在N次迭代後停下來,只需添加一個計數器。

請注意,您的代碼不會檢查每個級別中指針的有效性。

+0

我只打印一個頻率,umm – Ammar

+0

使用原始方法時您獲得了更多嗎?這個分支有多長? – Leeor

+0

是的,我每次都通過手動添加'left->'獲得多個 – Ammar