Дерево с 3 детьми

0

это вопрос типа структуры данных. У меня проблема с деревом. Я хочу взять данные от пользователя, скажем его имя. "DAN" теперь я хочу сделать дерево для этого с корневым узлом, имеющим трех детей. У меня есть дерево с тремя детьми.

как я реализую его со связанным списком. потому что в бинарном древовидном списке есть двое детей.

но здесь у меня три. Простой в том, что у меня есть корневой узел с тремя детьми

                root
                / | \
               /  |  \
             ch1 ch2  ch3
Теги:
data-structures

1 ответ

0

Простой, вы создаете структуру с тремя указателями для детей:

struct TreeNode
{
    int data;
    TreeNode *children[3];
};

Кроме того, вы можете превратить детей в связанный список, так что любой данный узел имеет прямой указатель на его первый ребенок, а также его первый родной брат:

struct TreeNode
{
    int data;
    TreeNode *firstChild;
    TreeNode *nextSibling;
};

// To iterate through the children of a node:
TreeNode *child = root->firstChild;
while (child != NULL)
{
    // Do stuff with child
    ...
    child = child->nextSibling;
}

Это легче распространяется на любое количество детей, но при доступе к данным у него более высокие показатели производительности. Поэтому, если вы знаете, что у каждого узла будет не более 3 детей, лучше использовать фиксированный массив дочерних указателей, чтобы улучшить время доступа и улучшить локальность кэша.

  • 0
    Он не компилируется. Вам нужен struct TreeNode (как в предыдущем редактировании
  • 0
    Вы можете определить это в форме ШАБЛОНА, пожалуйста. в C ++ не в C
Показать ещё 2 комментария

Ещё вопросы

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