From ac15243b2ac93d8e0d5a7f4fa62393c8f1a31b58 Mon Sep 17 00:00:00 2001 From: Naman Bhalla Date: Fri, 14 Jul 2017 13:54:11 +0530 Subject: [PATCH] Include Data Structures and start with Binary Trees --- data_structures/binary_trees/create_node.c | 39 ++++++++++++++++ .../binary_trees/recursiveTraversals.c | 45 +++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 data_structures/binary_trees/create_node.c create mode 100644 data_structures/binary_trees/recursiveTraversals.c diff --git a/data_structures/binary_trees/create_node.c b/data_structures/binary_trees/create_node.c new file mode 100644 index 00000000..f1f59e4d --- /dev/null +++ b/data_structures/binary_trees/create_node.c @@ -0,0 +1,39 @@ +/* Includes structure for a node and a newNode() function which + can be used to create a new node in the tree. + It is assumed that the data in nodes will be an integer, though + function can be modified according to the data type, easily. + */ + +#include +#include + +struct node +{ + struct node *leftNode; + int data; + struct node *rightNode; +}; + +struct node *newNode(int data) +{ + struct node *node = (struct node *)malloc(sizeof(struct node)); + + node->leftNode = NULL; + node->data = data; + node->rightNode = NULL; + + return node; +} + +int main(void) +{ + /* new node can be created here as :- + + struct node *nameOfNode = newNode(data); + + and tree can be formed by creating further nodes at + nameOfNode->leftNode and so on. + */ + + return 0; +} \ No newline at end of file diff --git a/data_structures/binary_trees/recursiveTraversals.c b/data_structures/binary_trees/recursiveTraversals.c new file mode 100644 index 00000000..aff56255 --- /dev/null +++ b/data_structures/binary_trees/recursiveTraversals.c @@ -0,0 +1,45 @@ +/* Includes the functions for Recursive Traversals + of a Binary Tree. It is assumed that nodes and + tree have been created as per create_node.c + */ + +#include + +void inOrderTraversal(struct node *node) +{ + if(node == NULL) //if tree is empty + return; + + inOrderTraversal(node->leftNode); + printf("\t%d\t", node->data); + inOrderTraversal(node->rightNode); +} + +void preOrderTraversal(struct node *node) +{ + if(node == NULL) //if tree is empty + return; + + printf("\t%d\t", node->data); + preOrderTraversal(node->leftNode); + preOrderTraversal(node->rightNode); +} + +void postOrderTraversal(struct node *node) +{ + if(node == NULL) //if tree is empty + return; + + postOrderTraversal(node->leftNode); + postOrderTraversal(node->rightNode); + printf("\t%d\t",node->data); +} + +int main(void) +{ + /* traversals can be done by simply invoking the + function with a pointer to the root node. + */ + + return 0; +} \ No newline at end of file