c++ - 树内容的格式化输出——先序遍历

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

递归让我有点不知所措。谢谢!

最佳答案

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);
}  

试试吧!

关于c++ - 树内容的格式化输出——先序遍历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13875010/

相关文章:

algorithm - 假镜。你能帮我解决吗?

algorithm - 具有 FIFO 队列的 Bellman-Ford 如何加速其迭代?

algorithm - 理解寻找最小圆包围点的算法

python - 在递归函数中定义内部函数是个坏主意吗?

c++ - 编译的Elf二进制文件太大

c++ - 是否可以使用包含 {sub,super} 类函数指针的回调表?

c++ - 意外的 ifstream 行为?

c++ - 如何查询类似于 "net use"的内存 UNC 连接?

php - 应用矩阵和递归调用

java - 我有一段代码,它可以立即解决迷宫问题,我希望它打印出迷宫的每一步