From dc937a738fd2e764d32f9970dc584d344184ff84 Mon Sep 17 00:00:00 2001 From: Nayan Sawyer <33187059+opus-tango@users.noreply.github.com> Date: Sun, 16 Nov 2025 11:58:56 -0500 Subject: [PATCH] add node struct to c binary tree --- .../trees/binary-tree/c/binary-tree.c | 47 +++++++++++++++++++ .../trees/binary-tree/c/binary-tree.h | 25 ++++++++++ 2 files changed, 72 insertions(+) create mode 100644 data-structures/trees/binary-tree/c/binary-tree.c create mode 100644 data-structures/trees/binary-tree/c/binary-tree.h diff --git a/data-structures/trees/binary-tree/c/binary-tree.c b/data-structures/trees/binary-tree/c/binary-tree.c new file mode 100644 index 0000000..261a87d --- /dev/null +++ b/data-structures/trees/binary-tree/c/binary-tree.c @@ -0,0 +1,47 @@ +#include "binary-tree.h" +#include +#include + +Node* create_node(int data){ + Node* node = malloc(sizeof(Node)); + node->data = data; + node->left = NULL; + node->right = NULL; + return node; +} + +void free_node(Node* node){ + if (node->left != NULL) { + free_node(node->left); + } + if (node->right != NULL){ + free_node(node->right); + } + free(node); +} + +void print_node(Node* node){ + if (node->right != NULL) { + printf("-"); + print_node(node->right); + } + printf("%d", node->data); + if (node->left != NULL) { + printf("-"); + print_node(node->left); + } +} + +Node* get_left(Node* node){ + return node->left; +} +Node* get_right(Node* node){ + return node->right; +} + +void set_left(Node* parent, Node* child){ + parent->left = child; +} +void set_right(Node* parent, Node* child){ + parent->right = child; +} diff --git a/data-structures/trees/binary-tree/c/binary-tree.h b/data-structures/trees/binary-tree/c/binary-tree.h new file mode 100644 index 0000000..f437cd5 --- /dev/null +++ b/data-structures/trees/binary-tree/c/binary-tree.h @@ -0,0 +1,25 @@ +#ifndef BINARY_TREE_H +#define BINARY_TREE_H + +#include +#include + +#endif + +typedef struct Node { + int data; + struct Node* left; + struct Node* right; +} Node; + +Node* create_node(int data); + +void free_node(Node* node); + +void print_node(Node* node); + +Node* get_left(Node* node); +Node* get_right(Node* node); + +void set_left(Node* parent, Node* child); +void set_right(Node* parent, Node* child);