14

我正在尝试打印二叉树

void print_tree(Node * root,int level )
 {
    if (root!=NULL)  
    {  
        cout<< root->value << endl;
    }
    //...
}

如何缩进输出以便使用级别“-”字符缩进每个值。

4

3 回答 3

33

你可以构造一个字符串来包含一个字符的多个重复:

std::cout << std::string(level, '-') << root->value << std::endl;
于 2009-10-11T10:11:53.957 回答
2

cout 有特殊字符,下面是两个:

'\t' - tab
'\n' - new line

希望它有所帮助。

于 2009-10-15T19:18:40.687 回答
1

您还可以按列缩进,并考虑第一列的大小,然后是第二列的大小等。您可以在每一列中找到最长的名称,然后使用填充设置此列中所有项目的宽度并根据需要对齐。您可以先动态搜索项目大小,然后选择宽度,也可以静态执行,例如:

#include <iomanip>
#include <iostream>
#include <sstream>

void print_some()
{
    using namespace std;
    stringstream ss;
    ss << left << setw(12) << "id: " << tank_name << '\n';
    ss << left << setw(12) << "texture: " << texture_name << '\n';
    ss << left << setw(12) << "uv_rect: ";
    // clang-format off
    ss << left <<setprecision(3) << fixed
       << setw(7) << r.pos.x << ' '
       << setw(7) << r.pos.y << ' '
       << setw(7) << r.size.x << ' '
       << setw(7) << r.size.y << '\n';
    // clang-format on
    ss << left << setw(12) << "world_pos: " << pos.x << ' ' << pos.y << '\n';
    ss << left << setw(12) << "size: " << size.x << ' ' << size.y << '\n';
    ss << left << setw(12) << "angle: " << angle << '\n';
}

输出可能如下所示:

id:         tank_spr
texture:    tank.png
uv_rect:    0.300   0.500   0.500   0.500  
world_pos:  0.123 0.123
size:       1.000 0.300
angle:      270.000
于 2019-03-23T15:30:00.577 回答