打印一般树级别
Print general tree levels
抱歉我的英语不好。
我需要打印一般树或n-ary树的层次。
树的结构是:
struct GTnode{
int data;
nodeGT *fc; //first child
nodeGT *nb; //next brother
}
算法的难点在于当你在同一层有2个不同的节点并且每个节点都有一个child。
正在编辑
例如,如果我有这棵树:
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) 进行 level-order/breadth-first 遍历。为此,您需要一个队列。将根放入队列中。然后这样做直到队列为空:取出第一个,将它的 ->fc 添加到队列并转到它的 ->nb(遍历所有 ->nb 直到没有更多,每次添加它的 ->fc到队列中)。
抱歉我的英语不好。
我需要打印一般树或n-ary树的层次。
树的结构是:
struct GTnode{
int data;
nodeGT *fc; //first child
nodeGT *nb; //next brother
}
算法的难点在于当你在同一层有2个不同的节点并且每个节点都有一个child。
正在编辑 例如,如果我有这棵树:
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) 进行 level-order/breadth-first 遍历。为此,您需要一个队列。将根放入队列中。然后这样做直到队列为空:取出第一个,将它的 ->fc 添加到队列并转到它的 ->nb(遍历所有 ->nb 直到没有更多,每次添加它的 ->fc到队列中)。