diff --git a/data-structures/trees/binary-tree/c/binary-tree.c b/data-structures/trees/binary-tree/c/binary-tree.c index 261a87d..6f9e13b 100644 --- a/data-structures/trees/binary-tree/c/binary-tree.c +++ b/data-structures/trees/binary-tree/c/binary-tree.c @@ -1,6 +1,7 @@ #include "binary-tree.h" #include #include +#include Node* create_node(int data){ Node* node = malloc(sizeof(Node)); @@ -21,14 +22,20 @@ void free_node(Node* node){ } void print_node(Node* node){ + _recursive_print_node(node, 0); +} + +void _recursive_print_node(Node* node, int level){ if (node->right != NULL) { - printf("-"); - print_node(node->right); + _recursive_print_node(node->right, level + 1); } - printf("%d", node->data); + char* dashes = malloc(sizeof(char) * (level+1)); + memset(dashes, '-', level); + dashes[level] = '\0'; + printf("%s%d\n", dashes, node->data); + free(dashes); if (node->left != NULL) { - printf("-"); - print_node(node->left); + _recursive_print_node(node->left, level + 1); } } diff --git a/data-structures/trees/binary-tree/c/binary-tree.h b/data-structures/trees/binary-tree/c/binary-tree.h index f437cd5..dbe310b 100644 --- a/data-structures/trees/binary-tree/c/binary-tree.h +++ b/data-structures/trees/binary-tree/c/binary-tree.h @@ -17,6 +17,7 @@ Node* create_node(int data); void free_node(Node* node); void print_node(Node* node); +void _recursive_print_node(Node* node, int level); Node* get_left(Node* node); Node* get_right(Node* node);