Level-order (breadth-first)
-
Hallo,
ich soll ein paar Daten von einem programm in Pre/Post/In/Level/-order darstellen.
Nun bin ich bei Levelorder und komme nicht hinter den algorithmus.
Ich habe ein bischen gegoogelt und in jetzt darauf gestoßen, dass ich das mit einer Queue angehen soll.Hier ist meine Header Queue.h:
#ifndef QUEUE_H #define QUEUE_H #include <stdlib.h> #include "list.h" typedef List Queue; #define queue_init list_init #define queue_destroy list_destroy int queue_enqueue(Queue *queue, const void *data); int queue_dequeue(Queue *queue, void **data); #define queue_peek(queue) ((queue)->head == NULL ? NULL : (queue)->head->data) #define queue_size list_size #endif
und meine Queue.c
#include <stdlib.h> #include "list.h" #include "queue.h" int queue_enqueue(Queue *queue, const void *data) { return list_ins_next(queue, list_tail(queue), data); } int queue_dequeue(Queue *queue, void **data) { return list_rem_next(queue, NULL, data); }
und mein Mainprogramm:
#include <stdio.h> #include <stdlib.h> #include <strings.h> #include <ctype.h> #include "bitree.h" #include "queue.h" #define BRAND_LENGTH 10 char Brands [7][BRAND_LENGTH] = {"Opel", "BMW", "AUDI","Chrysler", "Bugatti", "Peugeot", "VW"}; #define NEITHER 0 #define LEFT 1 #define RIGHT 2 BiTree tree; BiTreeNode *node; static void print_inorder(const BiTreeNode *node) { if (node == NULL) return; if (node->left != NULL) print_inorder (node->left); printf ("Node=%s\n", node->data); if (node->right != NULL) print_inorder (node->right); return; } static void print_preorder(const BiTreeNode *node) { if (node == NULL) return; printf ("Node=%s\n", node->data); if (node->left != NULL) print_preorder (node->left); if (node->right != NULL) print_preorder (node->right); return; } static void print_postorder(const BiTreeNode *node) { if (node == NULL) return; if (node->left != NULL) print_postorder (node->left); if (node->right != NULL) print_postorder (node->right); printf ("Node=%s\n", node->data); return; [b] static void print_levelorder(const BiTreeNode *node) { return;[/b] } }
-
Und was ist deine Frage?
-
Wie ich das ganze in Levelorder anstellen soll.
Bräuchte da ein paar tipps bzw ne hilfestellung...gruß Alex