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”,这样您就知道要缩进多少子元素了