Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

binary tree no recursion insert Solution 001 #include 002 #include 003 #include

ID: 3556824 • Letter: B

Question

binary tree no recursion insert

Explanation / Answer

001 #include 002 #include 003 #include 004 #include 005 #include 006 using namespace std; 007    008 struct node 009 { 010 char* key; 011     node* left; 012     node* right; 013          014 }; 015    016 class btree 017 { 018 private: 019     node* root; 020 void inordertraverse(node*); 021 void destroy_tree(node*); 022 node* find(char* ch); 023 public: 024     btree(); 025 ~btree(); 026     bool isEmpty() const { return root==NULL; } 027     void print_inorder(); 028     void search(char* ch); 029     void insert(char* ch); 030     void remove(char* dkey); 031 }; 032    033 // constructor 034 btree::btree() 035 { 036   root = NULL; 037 } 038    039 btree::~btree() 040 { 041   destroy_tree(root); 042 } 043    044 void btree::destroy_tree(node* p) 045 { 046 if (p != NULL) 047 { 048   destroy_tree(p->left); 049   destroy_tree(p->right); 050   delete p; 051 } 052 } 053    054 void btree::search(char * ch) 055 { 056 node* curr; 057 if (root == NULL) { 058   coutright = temp; 116      inserted = true; 117     } 118     else 119      locn = locn->right; 120    } 121   } 122 } 123 } 124 void btree::remove(char* data) 125 { 126 node *temp = root; 127 node *prev = root; 128 while (1) 129 { 130   if(temp == NULL) 131    return; 132   if(strcmp(temp->key , data) == 0) 133   { 134    bool left = false; 135    if(prev->left == temp) 136     left = true; 137    if(temp->left == NULL && left) 138    { 139     prev->left = temp->right; 140     delete temp; 141     return; 142    } 143    if(temp->right == NULL && left) 144    { 145     prev->left = temp->left; 146     delete temp; 147     return; 148    } 149    if(temp->left == NULL && left == false) 150    { 151     prev->right = temp->right; 152     delete temp; 153     return; 154    } 155    if(temp->right == NULL && left == false) 156    { 157     prev->right = temp->left; 158     delete temp; 159     return; 160    } 161    while(temp->left != NULL && temp->right != NULL) 162    { 163     temp->key = temp->right->key; 164     prev = temp; 165     temp = temp->right; 166    } 167    if(temp->right == NULL) 168     prev->right = temp->left; 169    if(temp->left == NULL) 170     prev->right = temp->right; 171    delete temp; 172    return; 173   } 174   prev = temp; 175   if(strcmp(temp->key,data) < 0) 176    temp = temp->right; 177   else 178    temp = temp->left; 179 } 180 } 181 182 void btree::print_inorder() 183 { 184 if (root != NULL) 185   inordertraverse(root); 186 else 187   cout