按级别打印BTree

时间:2011-05-04 23:16:58

标签: java applet b-tree

我正在尝试创建一个动画BTree的Java小程序。我有代码来创建树,但现在我正在尝试显示它。我认为最简单的方法是按级别打印,但我无法弄清楚如何。下面的代码是我的节点的构造函数。此外,如果有人有更好的建议显示我的树我会很感激。

    /***********************************************************************
 * 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 个答案:

答案 0 :(得分:3)

您想要执行树的级别顺序遍历。如果空间不是限制因素,我建议建立一个您希望下次访问的节点队列(在访问时将其子节点添加到队列的末尾)。

答案 1 :(得分:1)

我还建议横向级别订单。这里有一些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
}