打印常规树级别

Print general tree levels

本文关键字:常规树 打印      更新时间:2023-10-16

对不起,我的英语不好。

我需要打印一般树或 n 元树的级别。

树的结构是:

struct GTnode{
    int data;
    nodeGT *fc; //first child
    nodeGT *nb; //next brother
}

该算法的难度在于,当您在同一关卡中有 2 个不同的节点并且每个节点都有一个子节点时。

编辑例如,如果我有这棵树:

              1
     2        7        8
  3    6            9     12
 4 5              10 11

我必须打印:

1
2 7 8
3 6 9 12
4 5 10 11

每个 endl 代表树中的不同级别

编辑接下来是我的代码的想法:

void printLevel(GTnode *root){
   GTnode *aux = root;
   if(root != NULL){
      cout<<aux->data;
      printLevel(aux->nb);
      cout<<end; //Print the space between levels
      printLevel(aux->fc);
   }
}

我知道这是错误的,但这只是我所拥有的一个想法。

您需要对树 (wp) 进行级别顺序/广度优先遍历。为此,您需要一个队列。将根放入队列中。然后这样做,直到队列为空:取出第一个,将其 ->fc 添加到队列中并转到其 ->nb(遍历所有 ->nb,直到没有更多,每次将其 ->fc 添加到队列中)。