From 7296b5a0363793f2dd4432356dafd82a23c55df3 Mon Sep 17 00:00:00 2001 From: AMBIKA KUMAR KEWAT <60788663+kumar007ambi@users.noreply.github.com> Date: Sat, 19 Oct 2024 15:23:58 +0530 Subject: [PATCH 1/2] added inorder and preorder tree traversal problem --- DSA/inorder_tree_traversal.cpp | 40 +++++++++++++++++++++++++++++++++ DSA/preorder_tree_traversal.cpp | 40 +++++++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 DSA/inorder_tree_traversal.cpp create mode 100644 DSA/preorder_tree_traversal.cpp diff --git a/DSA/inorder_tree_traversal.cpp b/DSA/inorder_tree_traversal.cpp new file mode 100644 index 0000000..324ceb7 --- /dev/null +++ b/DSA/inorder_tree_traversal.cpp @@ -0,0 +1,40 @@ +#include +using namespace std; + +struct Node +{ + int data; + struct Node *left, *right; + Node(int v) + { + data = v; + left = right = NULL; + } +}; + +// inorder traversal function +void printInorder(struct Node *node) +{ + if (node == NULL) + return; + // left subtree + printInorder(node->left); + // print the node data + cout << node->data << " "; + // right subtree + printInorder(node->right); +} + +int main() +{ + struct Node *root = new Node(1); + root->left = new Node(2); + root->right = new Node(3); + root->left->left = new Node(4); + root->left->right = new Node(5); + root->right->right = new Node(6); + + printInorder(root); + + return 0; +} \ No newline at end of file diff --git a/DSA/preorder_tree_traversal.cpp b/DSA/preorder_tree_traversal.cpp new file mode 100644 index 0000000..59e92ed --- /dev/null +++ b/DSA/preorder_tree_traversal.cpp @@ -0,0 +1,40 @@ +#include +using namespace std; + +struct Node +{ + int data; + struct Node *left, *right; + Node(int v) + { + data = v; + left = right = NULL; + } +}; + +// print preorder traversal function +void printPreorder(struct Node *node) +{ + if (node == NULL) + return; + // print the node data + cout << node->data << " "; + // left subtree + printPreorder(node->left); + // right subtree + printPreorder(node->right); +} + +int main() +{ + struct Node *root = new Node(1); + root->left = new Node(2); + root->right = new Node(3); + root->left->left = new Node(4); + root->left->right = new Node(5); + root->right->right = new Node(6); + + printPreorder(root); + + return 0; +} From 3261a871194907ccdf4c5d196333cb63d60106f3 Mon Sep 17 00:00:00 2001 From: AMBIKA KUMAR KEWAT <60788663+kumar007ambi@users.noreply.github.com> Date: Mon, 21 Oct 2024 21:09:37 +0530 Subject: [PATCH 2/2] make required changes --- DSA/inorder_tree_traversal.cpp | 80 ++++++++++++++++++++------------- DSA/preorder_tree_traversal.cpp | 78 +++++++++++++++++++------------- 2 files changed, 97 insertions(+), 61 deletions(-) diff --git a/DSA/inorder_tree_traversal.cpp b/DSA/inorder_tree_traversal.cpp index 324ceb7..3d650a8 100644 --- a/DSA/inorder_tree_traversal.cpp +++ b/DSA/inorder_tree_traversal.cpp @@ -1,40 +1,58 @@ #include using namespace std; -struct Node -{ - int data; - struct Node *left, *right; - Node(int v) - { - data = v; - left = right = NULL; - } +// Definition for a binary tree node. +struct TreeNode { + int val; + TreeNode *left; + TreeNode *right; + + TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; -// inorder traversal function -void printInorder(struct Node *node) -{ - if (node == NULL) - return; - // left subtree - printInorder(node->left); - // print the node data - cout << node->data << " "; - // right subtree - printInorder(node->right); +// Function to insert a node in a Binary Search Tree (BST) +TreeNode* insert(TreeNode* root, int val) { + if (root == NULL) { + return new TreeNode(val); + } + if (val < root->val) { + root->left = insert(root->left, val); + } else { + root->right = insert(root->right, val); + } + return root; } -int main() -{ - struct Node *root = new Node(1); - root->left = new Node(2); - root->right = new Node(3); - root->left->left = new Node(4); - root->left->right = new Node(5); - root->right->right = new Node(6); - - printInorder(root); +// Inorder Traversal of the Binary Tree +void inorderTraversal(TreeNode* root) { + if (root == NULL) { + return; + } + inorderTraversal(root->left); // Traverse left subtree + cout << root->val << " "; // Visit node + inorderTraversal(root->right); // Traverse right subtree +} +int main() { + TreeNode* root = NULL; + int n, val; + // Taking number of elements as input + cout << "Enter the number of nodes: "; + cin >> n; + // Taking node values as input + cout << "Enter the values of the nodes:\n"; + for (int i = 0; i < n; i++) { + cin >> val; + root = insert(root, val); // Insert each value in the BST + } + // Performing inorder traversal + cout << "Inorder Traversal: "; + inorderTraversal(root); + cout << endl; return 0; -} \ No newline at end of file +} + +// Enter the number of nodes: 5 +// Enter the values of the nodes: +// 4 2 5 1 3 +// Inorder Traversal: 1 2 3 4 5 \ No newline at end of file diff --git a/DSA/preorder_tree_traversal.cpp b/DSA/preorder_tree_traversal.cpp index 59e92ed..0b9e7c5 100644 --- a/DSA/preorder_tree_traversal.cpp +++ b/DSA/preorder_tree_traversal.cpp @@ -1,40 +1,58 @@ #include using namespace std; -struct Node -{ - int data; - struct Node *left, *right; - Node(int v) - { - data = v; - left = right = NULL; - } +// Definition of a binary tree node +struct TreeNode { + int val; + TreeNode* left; + TreeNode* right; + + TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; -// print preorder traversal function -void printPreorder(struct Node *node) -{ - if (node == NULL) - return; - // print the node data - cout << node->data << " "; - // left subtree - printPreorder(node->left); - // right subtree - printPreorder(node->right); +// Function to perform preorder traversal +void preorderTraversal(TreeNode* root) { + if (root == NULL) return; + // Visit the root node + cout << root->val << " "; + // Traverse the left subtree + preorderTraversal(root->left); + // Traverse the right subtree + preorderTraversal(root->right); } -int main() -{ - struct Node *root = new Node(1); - root->left = new Node(2); - root->right = new Node(3); - root->left->left = new Node(4); - root->left->right = new Node(5); - root->right->right = new Node(6); - - printPreorder(root); +// Function to create a binary tree from user input +TreeNode* createTree() { + int val; + cout << "Enter node value (-1 for NULL): "; + cin >> val; + // Base case for recursion + if (val == -1) return NULL; + // Create a new node with the given value + TreeNode* root = new TreeNode(val); + // Recursively create the left and right subtrees + cout << "Enter left child of " << val << ": "; + root->left = createTree(); + cout << "Enter right child of " << val << ": "; + root->right = createTree(); + return root; +} +int main() { + // Create the binary tree + TreeNode* root = createTree(); + // Perform preorder traversal + cout << "Preorder Traversal: "; + preorderTraversal(root); + cout << endl; return 0; } + +// Enter node value (-1 for NULL): 1 +// Enter left child of 1: 2 +// Enter left child of 2: -1 +// Enter right child of 2: -1 +// Enter right child of 1: 3 +// Enter left child of 3: -1 +// Enter right child of 3: -1 +// Preorder Traversal: 1 2 3 \ No newline at end of file