Структуры данных связанного списка

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

Заранее спасибо!

Теги:
data-structures
linked-list

1 ответ

0
Лучший ответ

Предполагая, что вы правильно построили дерево, это должно распечатать всю левую цепочку до достижения листа -

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

или если вы хотите остановить после N итераций, просто добавьте счетчик.

Обратите внимание, что ваш код не проверяет правильность указателей на каждом уровне.

  • 0
    Я получаю только одну частоту, мм
  • 0
    Вы получили больше при использовании оригинального метода? Как долго длится эта ветка?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню