diff --git a/InorderTraversalBinaryTree.cpp b/InorderTraversalBinaryTree.cpp new file mode 100644 index 0000000..0233318 --- /dev/null +++ b/InorderTraversalBinaryTree.cpp @@ -0,0 +1,86 @@ +#include +#include + +using namespace std; + + + +struct Node { + int data; + Node* left; + Node* right; +}; + +Node* CreateNode(int data) +{ + Node* newNode = new Node(); + newNode->data = data; + newNode->left = newNode->right = NULL; + return newNode; +} + +/* Function to insert element in binary tree */ + +Node* InsertNode(Node* root, int data) +{ + // If the tree is empty, assign new node address to root + if (root == NULL) { + root = CreateNode(data); + return root; + } + + // Else, do level order traversal until we find an empty + // place, i.e. either left child or right child of some + // node is pointing to NULL. + queue q; + q.push(root); + + while (!q.empty()) { + Node* temp = q.front(); + q.pop(); + + if (temp->left != NULL) + q.push(temp->left); + else { + temp->left = CreateNode(data); + return root; + } + + if (temp->right != NULL) + q.push(temp->right); + else { + temp->right = CreateNode(data); + return root; + } + } +} + +/* Inorder traversal of a binary tree */ + +void inorder(Node* temp) +{ + if (temp == NULL) + return; + + inorder(temp->left); + cout << temp->data << ' '; + inorder(temp->right); +} + + + + +// Driver code +int main() +{ + Node* root = CreateNode(10); + root->left = CreateNode(11); + root->left->left = CreateNode(7); + root->right = CreateNode(9); + root->right->left = CreateNode(15); + root->right->right = CreateNode(8); + + inorder(root); + + return 0; +} \ No newline at end of file diff --git a/PreorderTraversalBinaryTree.cpp b/PreorderTraversalBinaryTree.cpp new file mode 100644 index 0000000..55909e7 --- /dev/null +++ b/PreorderTraversalBinaryTree.cpp @@ -0,0 +1,85 @@ +#include +#include + +using namespace std; + + + +struct Node { + int data; + Node* left; + Node* right; +}; + +Node* CreateNode(int data) +{ + Node* newNode = new Node(); + newNode->data = data; + newNode->left = newNode->right = NULL; + return newNode; +} + +/* Function to insert element in binary tree */ + +Node* InsertNode(Node* root, int data) +{ + // If the tree is empty, assign new node address to root + if (root == NULL) { + root = CreateNode(data); + return root; + } + + // Else, do level order traversal until we find an empty + // place, i.e. either left child or right child of some + // node is pointing to NULL. + queue q; + q.push(root); + + while (!q.empty()) { + Node* temp = q.front(); + q.pop(); + + if (temp->left != NULL) + q.push(temp->left); + else { + temp->left = CreateNode(data); + return root; + } + + if (temp->right != NULL) + q.push(temp->right); + else { + temp->right = CreateNode(data); + return root; + } + } +} + +/* Preorder traversal of a binary tree */ + +void preorder(Node* temp) +{ + if (temp == NULL) + return; + cout << temp->data << ' '; + preorder(temp->left); + preorder(temp->right); +} + + + + +// Driver code +int main() +{ + Node* root = CreateNode(10); + root->left = CreateNode(11); + root->left->left = CreateNode(7); + root->right = CreateNode(9); + root->right->left = CreateNode(15); + root->right->right = CreateNode(8); + + inorder(root); + + return 0; +} \ No newline at end of file