lain each line by adding comments #include using namespace std; class Node { public: int value; Node * left; Node * right;

Computer Networking: A Top-Down Approach (7th Edition)
7th Edition
ISBN:9780133594140
Author:James Kurose, Keith Ross
Publisher:James Kurose, Keith Ross
Chapter1: Computer Networks And The Internet
Section: Chapter Questions
Problem R1RQ: What is the difference between a host and an end system? List several different types of end...
icon
Related questions
Question

explain each line by adding comments

#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);
// BFS AND DFS
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;
}

Expert Solution
steps

Step by step

Solved in 2 steps with 1 images

Blurred answer
Recommended textbooks for you
Computer Networking: A Top-Down Approach (7th Edi…
Computer Networking: A Top-Down Approach (7th Edi…
Computer Engineering
ISBN:
9780133594140
Author:
James Kurose, Keith Ross
Publisher:
PEARSON
Computer Organization and Design MIPS Edition, Fi…
Computer Organization and Design MIPS Edition, Fi…
Computer Engineering
ISBN:
9780124077263
Author:
David A. Patterson, John L. Hennessy
Publisher:
Elsevier Science
Network+ Guide to Networks (MindTap Course List)
Network+ Guide to Networks (MindTap Course List)
Computer Engineering
ISBN:
9781337569330
Author:
Jill West, Tamara Dean, Jean Andrews
Publisher:
Cengage Learning
Concepts of Database Management
Concepts of Database Management
Computer Engineering
ISBN:
9781337093422
Author:
Joy L. Starks, Philip J. Pratt, Mary Z. Last
Publisher:
Cengage Learning
Prelude to Programming
Prelude to Programming
Computer Engineering
ISBN:
9780133750423
Author:
VENIT, Stewart
Publisher:
Pearson Education
Sc Business Data Communications and Networking, T…
Sc Business Data Communications and Networking, T…
Computer Engineering
ISBN:
9781119368830
Author:
FITZGERALD
Publisher:
WILEY