Печать BTree по уровню - PullRequest
1 голос
/ 05 мая 2011

Я пытаюсь создать Java-апплет, который анимирует BTree. У меня есть код для создания дерева, но сейчас я пытаюсь его отобразить. Я думал, что самый простой способ будет печатать по уровням, но я не могу понять, как. Приведенный ниже код является конструктором для моих узлов. Кроме того, если у кого-то есть лучшее предложение для отображения моего дерева, я был бы признателен.

    /***********************************************************************
 * Class BTNode
 * The BTNode is nothing else than a Node in the BTree. This nodes can be
 * greater or smaller it depends on the users order.
 **/

class BTNode {
    int order=0;
    int nKey=0;         // number of keys stored in node
    KeyNode kArray[];       // array where keys are stored
    BTNode btnArray[];  // array where references to the next BTNodes is stored
    boolean isLeaf;     // is the btnode a leaf
    BTNode parent;      // link to the parent node

    /**
       * BTNode(int order, BTNode parent);
       * Constructor, creats a empty node with the given order and parent
       **/
    BTNode(int order, BTNode parent) {
        this.order = order;
        this.parent = parent;
        kArray = new KeyNode[2 * order - 1];
        btnArray = new BTNode[2 * order];
        isLeaf = true;
    }

Ответы [ 2 ]

3 голосов
/ 05 мая 2011

Вы хотите выполнить обход дерева уровня-порядка.Если пространство не является ограничивающим фактором, я бы предложил построить очередь узлов, которые вы хотите посетить следующим (добавление их дочерних узлов в конец очереди при посещении).

1 голос
/ 05 мая 2011

Я бы также рекомендовал трансверсаль порядка уровней. Вот некоторый sudocode для этого:

Add root to queue
while queue is not empty
{
    r = queue.top()
    process r
    remove r from queue
    add r's non-NULL children to the queue
}
...