Я пытаюсь создать дерево Хаффмана, поэтому создал связанную структуру списка. Я пытаюсь распечатать частоты автоматически, а не следующим образом.
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;
}
};
Заранее спасибо!
Предполагая, что вы правильно построили дерево, это должно распечатать всю левую цепочку до достижения листа -
binaryTreeNode *p = root;
while (p->left != NULL) {
p = p->left;
cout << p->frequency << endl;
}
или если вы хотите остановить после N итераций, просто добавьте счетчик.
Обратите внимание, что ваш код не проверяет правильность указателей на каждом уровне.