21469 Assignment 5
21469 Assignment 5
#include <iostream>
#include <climits>
class TreeNode {
public:
int data;
TreeNode() {
data = 0;
TreeNode(int data) {
this->data = data;
};
class InorderedTBST {
private:
TreeNode *root;
TreeNode *dummyNode;
public:
InorderedTBST() {
root = nullptr;
dummyNode = nullptr;
void create() {
int element;
if (root == nullptr) {
root = newNode;
dummyNode->left = root;
dummyNode->left_thread = false;
dummyNode->right = dummyNode;
dummyNode->right_thread = false;
root->left = dummyNode;
root->right = dummyNode;
} else {
while (true) {
if (!current->left_thread) {
current = current->left;
} else {
break;
} else {
if (!current->right_thread) {
current = current->right;
} else {
break;
newNode->left = current->left;
newNode->right = current;
current->left = newNode;
current->left_thread = false;
} else {
newNode->right = current->right;
newNode->left = current;
current->right = newNode;
current->right_thread = false;
if (current->right_thread)
return current->right;
current = current->right;
while (!current->left_thread)
current = current->left;
return current;
if (current == nullptr) {
cout << "There is NO inorder threaded binary search tree created yet !!" << endl;
return;
while (!current->left_thread)
current = current->left;
current = find_successor(current);
void inorder() {
inorder(root);
if (current == nullptr) {
cout << "There is NO inorder threaded binary search tree created yet !!" << endl;
return;
current = current->left;
if (!current->right_thread) {
current = current->right;
flag = false;
} else {
current = current->right;
flag = true;
void preorder() {
preorder(root);
};
int main() {
InorderedTBST tree;
int choice;
do {
switch (choice) {
case 1:
tree.create();
break;
case 2:
tree.inorder();
break;
case 3:
tree.preorder();
break;
case 4:
break;
default:
return 0;
OUTPUT: