Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 86 additions & 0 deletions InorderTraversalBinaryTree.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
#include<iostream>
#include<bits/stdc++.h>

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<Node*> 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;
}
85 changes: 85 additions & 0 deletions PreorderTraversalBinaryTree.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
#include<iostream>
#include<bits/stdc++.h>

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<Node*> 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;
}