Hello, i have uploaded the question and the code of that question below. Your work is to change the code below so it doesnot look the same and also add the comments in new code explaining each line. Pleaseeee Consider the following sequence: 10, 32, 70, 15, 60, 5, 7, 23, 19 Represent it in the form of an array Perform breadth first traversal Perform Inorder, pre order and post order traversals Delete the node 32, and re draw the tree after deletion Implement the above to support your answers CODE #include using namespace std; class Node { public: int value; Node * left; Node * right; Node() { value = 0; left = NULL; right = NULL; } Node(int v) { value = v; left = NULL; right = NULL; } }; class BST { public: Node * root; BST() { root = NULL; } bool isTreeEmpty() { if (root == NULL) { return true; } else { return false; } } void insertNode(Node * new_node) { if (root == NULL) { root = new_node; cout << "Value Inserted as root node!" << endl; } else { Node * temp = root; while (temp != NULL) { if (new_node -> value == temp -> value) { cout << "Value Already exist," << "Insert another value!" << endl; return; } else if ((new_node -> value < temp -> value) && (temp -> left == NULL)) { temp -> left = new_node; cout << "Value Inserted to the left" << endl; break; } else if (new_node -> value < temp -> value) { temp = temp -> left; } else if ((new_node -> value > temp -> value) && (temp -> right == NULL)) { temp -> right = new_node; cout << "Value Inserted to the right" << endl; break; } else { temp = temp -> right; } } } } Node* insertRecursive(Node *r, Node *new_node) { if(r==NULL) { r=new_node; cout <<"Insertion successful"<value < r->value) { r->left = insertRecursive(r->left,new_node); } else if (new_node->value > r->value) { r->right = insertRecursive(r->right,new_node); } else { cout << "No duplicate values allowed" << endl; return r; } return r; } void printPreorder(Node * r) { if (r == NULL) return; cout << r -> value << " "; printPreorder(r -> left); printPreorder(r -> right); } void printInorder(Node * r) { if (r == NULL) return; printInorder(r -> left); cout << r -> value << " "; printInorder(r -> right); } void printPostorder(Node * r) { if (r == NULL) return; printPostorder(r -> left); printPostorder(r -> right); cout << r -> value << " "; } Node * iterativeSearch(int v) { if (root == NULL) { return root; } else { Node * temp = root; while (temp != NULL) { if (v == temp -> value) { return temp; } else if (v < temp -> value) { temp = temp -> left; } else { temp = temp -> right; } } return NULL; } } Node * recursiveSearch(Node * r, int val) { if (r == NULL || r -> value == val) return r; else if (val < r -> value) return recursiveSearch(r -> left, val); else return recursiveSearch(r -> right, val); } int height(Node * r) { if (r == NULL) return -1; else { int lheight = height(r -> left); int rheight = height(r -> right); if (lheight > rheight) return (lheight + 1); else return (rheight + 1); } } void printGivenLevel(Node * r, int level) { if (r == NULL) return; else if (level == 0) cout << r -> value << " "; else { printGivenLevel(r -> left, level - 1); printGivenLevel(r -> right, level - 1); } } void printLevelOrderBFS(Node * r) { int h = height(r); for (int i = 0; i <= h; i++) printGivenLevel(r, i); } Node * minValueNode(Node * node) { Node * current = node; while (current -> left != NULL) { current = current -> left; } return current; } Node * deleteNode(Node * r, int v) { if (r == NULL) { return NULL; } else if (v < r -> value) { r -> left = deleteNode(r -> left, v); } else if (v > r -> value) { r -> right = deleteNode(r -> right, v); } else { if (r -> left == NULL) { Node * temp = r -> right; delete r; return temp; } else if (r -> right == NULL) { Node * temp = r -> left; delete r; return temp; } else { Node * temp = minValueNode(r -> right); r -> value = temp -> value; r -> right = deleteNode(r -> right, temp -> value); } } return r; } }; int main() { BST obj; Node *new_node = new Node(); new_node->value = 10; obj.insertNode(new_node); Node *new_node1 = new Node(); new_node1->value = 32; obj.insertNode(new_node1); Node *new_node2 = new Node(); new_node2->value = 70; obj.insertNode(new_node2); Node *new_node3 = new Node(); new_node3->value = 15; obj.insertNode(new_node3); Node *new_node4 = new Node(); new_node4->value = 60; obj.insertNode(new_node4); Node *new_node5 = new Node(); new_node5->value = 5; obj.insertNode(new_node5); Node *new_node6 = new Node(); new_node6->value = 7; obj.insertNode(new_node6); Node *new_node7 = new Node(); new_node7->value = 23; obj.insertNode(new_node7); Node *new_node8 = new Node(); new_node8->value = 19; obj.insertNode(new_node8); cout << "Breadth First Traversal: \n"; obj.printLevelOrderBFS(obj.root); cout << endl; cout <<"PRE-ORDER: "; obj.printPreorder(obj.root); cout<
Hello, i have uploaded the question and the code of that question below. Your work is to change the code below so it doesnot look the same and also add the comments in new code explaining each line. Pleaseeee
Consider the following sequence:
10, 32, 70, 15, 60, 5, 7, 23, 19
- Represent it in the form of an array
- Perform breadth first traversal
- Perform Inorder, pre order and post order traversals
- Delete the node 32, and re draw the tree after deletion
- Implement the above to support your answers
CODE
#include<iostream>
using namespace std;
class Node {
public:
int value;
Node * left;
Node * right;
Node() {
value = 0;
left = NULL;
right = NULL;
}
Node(int v) {
value = v;
left = NULL;
right = NULL;
}
};
class BST {
public:
Node * root;
BST() {
root = NULL;
}
bool isTreeEmpty() {
if (root == NULL) {
return true;
}
else {
return false;
}
}
void insertNode(Node * new_node) {
if (root == NULL) {
root = new_node;
cout << "Value Inserted as root node!" << endl;
}
else {
Node * temp = root;
while (temp != NULL) {
if (new_node -> value == temp -> value) {
cout << "Value Already exist," <<
"Insert another value!" << endl;
return;
}
else if ((new_node -> value < temp -> value) && (temp -> left == NULL)) {
temp -> left = new_node;
cout << "Value Inserted to the left" << endl;
break;
}
else if (new_node -> value < temp -> value) {
temp = temp -> left;
}
else if ((new_node -> value > temp -> value) && (temp -> right == NULL)) {
temp -> right = new_node;
cout << "Value Inserted to the right" << endl;
break;
}
else {
temp = temp -> right;
}
}
}
}
Node* insertRecursive(Node *r, Node *new_node)
{
if(r==NULL)
{
r=new_node;
cout <<"Insertion successful"<<endl;
return r;
}
if(new_node->value < r->value)
{
r->left = insertRecursive(r->left,new_node);
}
else if (new_node->value > r->value)
{
r->right = insertRecursive(r->right,new_node);
}
else
{
cout << "No duplicate values allowed" << endl;
return r;
}
return r;
}
void printPreorder(Node * r)
{
if (r == NULL)
return;
cout << r -> value << " ";
printPreorder(r -> left);
printPreorder(r -> right);
}
void printInorder(Node * r)
{
if (r == NULL)
return;
printInorder(r -> left);
cout << r -> value << " ";
printInorder(r -> right);
}
void printPostorder(Node * r)
{
if (r == NULL)
return;
printPostorder(r -> left);
printPostorder(r -> right);
cout << r -> value << " ";
}
Node * iterativeSearch(int v) {
if (root == NULL) {
return root;
} else {
Node * temp = root;
while (temp != NULL) {
if (v == temp -> value) {
return temp;
} else if (v < temp -> value) {
temp = temp -> left;
} else {
temp = temp -> right;
}
}
return NULL;
}
}
Node * recursiveSearch(Node * r, int val) {
if (r == NULL || r -> value == val)
return r;
else if (val < r -> value)
return recursiveSearch(r -> left, val);
else
return recursiveSearch(r -> right, val);
}
int height(Node * r) {
if (r == NULL)
return -1;
else {
int lheight = height(r -> left);
int rheight = height(r -> right);
if (lheight > rheight)
return (lheight + 1);
else return (rheight + 1);
}
}
void printGivenLevel(Node * r, int level) {
if (r == NULL)
return;
else if (level == 0)
cout << r -> value << " ";
else
{
printGivenLevel(r -> left, level - 1);
printGivenLevel(r -> right, level - 1);
}
}
void printLevelOrderBFS(Node * r) {
int h = height(r);
for (int i = 0; i <= h; i++)
printGivenLevel(r, i);
}
Node * minValueNode(Node * node) {
Node * current = node;
while (current -> left != NULL) {
current = current -> left;
}
return current;
}
Node * deleteNode(Node * r, int v) {
if (r == NULL) {
return NULL;
}
else if (v < r -> value) {
r -> left = deleteNode(r -> left, v);
}
else if (v > r -> value) {
r -> right = deleteNode(r -> right, v);
}
else {
if (r -> left == NULL) {
Node * temp = r -> right;
delete r;
return temp;
} else if (r -> right == NULL) {
Node * temp = r -> left;
delete r;
return temp;
} else {
Node * temp = minValueNode(r -> right);
r -> value = temp -> value;
r -> right = deleteNode(r -> right, temp -> value);
}
}
return r;
}
};
int main() {
BST obj;
Node *new_node = new Node();
new_node->value = 10;
obj.insertNode(new_node);
Node *new_node1 = new Node();
new_node1->value = 32;
obj.insertNode(new_node1);
Node *new_node2 = new Node();
new_node2->value = 70;
obj.insertNode(new_node2);
Node *new_node3 = new Node();
new_node3->value = 15;
obj.insertNode(new_node3);
Node *new_node4 = new Node();
new_node4->value = 60;
obj.insertNode(new_node4);
Node *new_node5 = new Node();
new_node5->value = 5;
obj.insertNode(new_node5);
Node *new_node6 = new Node();
new_node6->value = 7;
obj.insertNode(new_node6);
Node *new_node7 = new Node();
new_node7->value = 23;
obj.insertNode(new_node7);
Node *new_node8 = new Node();
new_node8->value = 19;
obj.insertNode(new_node8);
cout << "Breadth First Traversal: \n";
obj.printLevelOrderBFS(obj.root);
cout << endl;
cout <<"PRE-ORDER: ";
obj.printPreorder(obj.root);
cout<<endl;
cout <<"IN-ORDER: ";
obj.printInorder(obj.root);
cout<<endl;
cout <<"POST-ORDER: ";
obj.printPostorder(obj.root);
new_node = obj.iterativeSearch(32);
if (new_node != NULL) {
obj.deleteNode(obj.root, 32);
cout << "\nValue Deleted" << endl;
}
else {
cout << "\nValue NOT found" << endl;
}
cout << "Breadth First Traversal: \n";
obj.printLevelOrderBFS(obj.root);
cout << endl;
return 0;
}
Step by step
Solved in 2 steps with 1 images