C++ 如何使用递归函数打印节点树

C++ 如何使用递归函数打印节点树,c++,recursion,treenode,C++,Recursion,Treenode,我有一个传递节点树的函数。 该函数应以以下形式打印节点树: root node node node node node node node node 我似乎不知道该怎么做。 到目前为止,我得到的是: void IterateTree(Node &rNode ) { printf("\t\n"); std::cout << rNode.Name() << std::endl; int i = 0; for

我有一个传递节点树的函数。 该函数应以以下形式打印节点树:

root
 node
  node
  node
 node
 node
  node
   node
 node
我似乎不知道该怎么做。 到目前为止,我得到的是:

void IterateTree(Node &rNode )
{
    printf("\t\n");
    std::cout << rNode.Name() << std::endl;

    int i = 0;
    for (std::list<Node>::iterator it = rNode.childs.begin(); it != rNode.childs.end(); ++it)
    {
        printf("%d: ", i);
        IterateTree(*it);
        printf("\b");
        i++;
    }
}
void iteratree(节点和节点)
{
printf(“\t\n”);

std::cout使用另一个参数跟踪递归的“深度”

void IterateTree(Node &rNode , int depth)
{
    printf("\t\n");
    std::cout << rNode.Name() << std::endl;

    int i = 0;
    for (std::list<Node>::iterator it = rNode.childs.begin(); it != rNode.childs.end(); ++it)
    {
        for(int j=0; j<depth; j++){printf(" ");}
        printf("%d: ", i);
        IterateTree(*it, depth+1);
        printf("\b");
        i++;
    }
}
void iteratree(Node&rNode,int-depth)
{
printf(“\t\n”);

std::cout还没有测试过,但我的第一个猜测是这样的:

void iterateTree(Node &node, int level = 0){
    for(int i = 0; i < level; i++) printf("\t"); //foreach level print a tab

    cout << rNode.Name() << endl; //output the node

    int i = 0;
    level += 1; //if the for runs there is a next level
    for(list<Node>::iterator it = r.Node.childs.begin(); it != rNode.childs.end(); ++it){
        iterateTree(it, level);
    }
} 
void iteratree(节点&节点,int级别=0){
for(int i=0;i对我来说,这看起来不错吧,只需添加另一个参数“depth”,这样您就知道要缩进多少子元素了