打印常规树级别

时间:2015-02-03 01:07:06

标签: c++ tree levels

抱歉我的英语不好。

我需要打印一般树或n-ary树的等级。

树的结构是:

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

我知道这是错的,但只是对我所拥有的一切的了解。

1 个答案:

答案 0 :(得分:1)

您需要对树进行水平顺序/广度优先遍历(wp)。要做到这一点,你需要一个队列。将根放入队列中。然后执行此操作,直到队列为空:取出第一个,将其 - &gt; fc添加到队列并转到其 - &gt; nb(遍历所有 - &gt; nb's直到有了nomore并且每次添加其 - &gt; fc到队列中。