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 coutRelated Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.