DSA Practical 5
DSA Practical 5
Code:-
#include <iostream>
#include <queue>
using namespace std;
struct TreeNode {
int data;
TreeNode* left;
TreeNode* right;
TreeNode(int value) {
data = value; left =
nullptr;
right = nullptr;
}
};
class BinarySearchTree
{ public:
BinarySearchTree()
{ root = nullptr;
}
void inorderTraversal()
{ inorderTraversalHelper(root);
cout << endl;
}
void preorderTraversal()
{ preorderTraversalHelper(root);
cout << endl;
}
void postorderTraversal()
{ postorderTraversalHelper(root);
cout << endl;
}
int findDepth() {
return findDepthHelper(root);
}
void mirrorImage() {
mirrorImageHelper(root);
}
BinarySearchTree* createCopy()
{ return createCopyHelper(root);
}
void displayParentChildNodes()
{ displayParentChildNodesHelper(root);
}
void displayLeafNodes()
{ displayLeafNodesHelper(root);
cout << endl;
}
void levelOrderTraversal()
{ levelOrderTraversalHelper(root);
cout << endl;
}
private:
TreeNode* root;
}
}
displayLeafNodesHelper(node->left);
displayLeafNodesHelper(node->right);
}
int main() {
BinarySearchTree bst;
int choice, value;
TreeNode* foundNode = nullptr; // Declared outside of switch
BinarySearchTree* copy = nullptr; // Declared outside of switch while
(true) {
cout << "\n1. Insert\n2. Delete\n3. Search\n4. Inorder Traversal\n5. Preorder Traversal\n6. Postorder Traversal\
n7. Find Depth\n8. Mirror Image\n9. Create Copy\n10. Display Parent-Child Nodes\n11. Display Leaf
Nodes\n12. Level Order Traversal\n13. Exit\n";
cout << "Enter your choice: ";
cin >> choice;
switch (choice)
{ case 1:
cout << "Enter value to insert: ";
cin >> value; bst.insert(value);
break;
case 2:
if
}