LAB09
LAB09
ROLL NO : F23-0055
DATA STRUCTURES
LAB # 09
Q#01
#include <iostream>
using namespace std;
struct Node {
int data;
Node* left;
Node* right;
Node(int val) : data(val), left(nullptr), right(nullptr) {}
};
class BST {
public:
Node* root;
BST() : root(nullptr) {}
int main() {
BST tree;
tree.root = tree.insert(tree.root, 50);
tree.insert(tree.root, 30);
tree.insert(tree.root, 70);
tree.insert(tree.root, 20);
tree.insert(tree.root, 40);
tree.insert(tree.root, 60);
tree.insert(tree.root, 80);
struct Node {
int data;
Node* left;
Node* right;
Node(int val) : data(val), left(nullptr), right(nullptr) {}
};
class BST {
public:
Node* root;
BST() : root(nullptr) {}
int main() {
BST tree;
tree.root = tree.insert(tree.root, 50);
tree.insert(tree.root, 30);
tree.insert(tree.root, 70);
tree.insert(tree.root, 20);
tree.insert(tree.root, 40);
tree.insert(tree.root, 60);
tree.insert(tree.root, 80);
cout << "Sum of leaf nodes: " << tree.sumOfLeafNodes(tree.root) << endl;
system("pause");
return 0;
}
Q#03
#include <iostream>
using namespace std;
struct Node {
int data;
Node* left;
Node* right;
Node(int val) : data(val), left(nullptr), right(nullptr) {}
};
class BST {
public:
Node* root;
BST() : root(nullptr) {}
int main() {
BST tree;
tree.root = tree.insert(tree.root, 50);
tree.insert(tree.root, 30);
tree.insert(tree.root, 70);
tree.insert(tree.root, 20);
tree.insert(tree.root, 40);
tree.insert(tree.root, 60);
tree.insert(tree.root, 80);
cout << "Sum of leaf nodes: " << tree.sumOfLeafNodes(tree.root) << endl;
int k = 2;
cout << "Nodes at level " << k << ": ";
tree.printLevel(tree.root, k);
cout << endl;
struct Node {
int data;
Node* left;
Node* right;
Node(int val) : data(val), left(nullptr), right(nullptr) {}
};
class BST {
public:
Node* root;
BST() : root(nullptr) {}
int main() {
BST tree;
tree.root = tree.insert(tree.root, 50);
tree.insert(tree.root, 30);
tree.insert(tree.root, 70);
tree.insert(tree.root, 20);
tree.insert(tree.root, 40);
tree.insert(tree.root, 60);
tree.insert(tree.root, 80);
cout << "Sum of leaf nodes: " << tree.sumOfLeafNodes(tree.root) << endl;
int k = 2;
cout << "Nodes at level " << k << ": ";
tree.printLevel(tree.root, k);
cout << endl;
struct Node {
int data;
Node* left;
Node* right;
Node(int val) : data(val), left(nullptr), right(nullptr) {}
};
class BST {
public:
Node* root;
BST() : root(nullptr) {}
int main() {
BST tree;
tree.root = tree.insert(tree.root, 50);
tree.insert(tree.root, 30);
tree.insert(tree.root, 70);
tree.insert(tree.root, 20);
tree.insert(tree.root, 40);
tree.insert(tree.root, 60);
tree.insert(tree.root, 80);
cout << "Sum of leaf nodes: " << tree.sumOfLeafNodes(tree.root) << endl;
int k = 2;
cout << "Nodes at level " << k << ": ";
tree.printLevel(tree.root, k);
cout << endl;
BST tree2;
tree2.root = tree2.insert(tree2.root, 50);
tree2.insert(tree2.root, 30);
tree2.insert(tree2.root, 70);
tree2.insert(tree2.root, 20);
tree2.insert(tree2.root, 40);
tree2.insert(tree2.root, 60);
tree2.insert(tree2.root, 80);
cout << "Trees are " << (tree.isIdentical(tree.root, tree2.root) ? "identical" : "not identical")
<< endl;
system("pause");
return 0;
}
Q#06
#include <iostream>
using namespace std;
struct Node {
int data;
Node* children[3];
Node(int val) : data(val) {
children[0] = children[1] = children[2] = nullptr;
}
};
class EvolutionaryTree {
public:
Node* root;
EvolutionaryTree(int rootVal, int maxHeight) {
root = generateTree(rootVal, maxHeight);
}
int main() {
int rootVal, maxHeight, searchKey;
cout << "Enter root node value: ";
cin >> rootVal;
cout << "Enter maximum height: ";
cin >> maxHeight;
cout << "Enter search key: ";
cin >> searchKey;
return 0;
}
Q#07
#include <iostream>
using namespace std;
struct Node {
int data;
Node* children[3];
Node(int val) : data(val) {
children[0] = children[1] = children[2] = nullptr;
}
};
class EvolutionaryTree {
public:
Node* root;
EvolutionaryTree(int rootVal, int maxHeight) {
root = generateTree(rootVal, maxHeight);
}
int main() {
int rootVal, maxHeight, searchKey;
cout << "Enter root node value: ";
cin >> rootVal;
cout << "Enter maximum height: ";
cin >> maxHeight;
cout << "Enter search key: ";
cin >> searchKey;
int deleteKey;
cout << "Enter node value to delete descendants: ";
cin >> deleteKey;
tree.deleteDescendantsOfKey(tree.root, deleteKey);
system("pause");
return 0;
}