0

ツリーの内容を印刷する方法があります。

void RedBlackTree::printPreorder(RedBlackNode *root){
    if(root == NULL) 
        return;
    cout << root->data << endl;
    printInorder(root->left);
    printInorder(root->right);
}

ツリーの内容は正しく読み取られていますが、見栄えが良くなるようにツリーをフォーマットしたいと思います。今、木の場合:

    c
   / \
  b   k
 /   / \
a   d   m

内容の印刷:

c
b
a
k
d
m

しかし、次のようにインデントを追加したいと思います。

c
    b
        a
    k
        d
        m

形式は次のようになります。

Root
    Left 
        LeftLeft
        LeftRight
    Right
        RightLeft
        RightRight

etc....

再帰で少し迷っています。ありがとう!

4

1 に答える 1

1
void RedBlackTree::printPreorder(RedBlackNode *root, int depth){
    if(root == NULL) 
        return;
    for(int i=0; i<=depth; i++)
      cout <<" ";

    depth++;
    cout << root->data << endl;
    printInorder(root->left, depth);
    printInorder(root->right, depth);
}  

試してみる!!

于 2012-12-14T08:39:19.560 に答える