格式化树内容的输出 - 预先遍历遍历

时间:2012-12-14 08:26:57

标签: c++ algorithm recursion tree preorder

我有一种打印树内容的方法:

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....

我对递归感到有些失落。谢谢!

1 个答案:

答案 0 :(得分: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);
}  

试一试!!