【问题标题】:Print general tree levels打印一般树级别
【发布时间】:2015-02-03 01:07:05
【问题描述】:

对不起,我的英语不好。

我需要打印一般树或 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);
   }
}

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

【问题讨论】:

    标签: c++ tree levels


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-26
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      • 2012-10-22
      相关资源
      最近更新 更多