C++ PROGRAMMING Topic: Binary Search Trees Explain the c++ code below.: SEE ATTACHED PHOTO FOR THE PROBLEM INSTRUCTIONS It doesn't have to be long, as long as you explain what the important parts of the code do. (The code is already implemented and correct, only the explanation needed) EXPLAIN THE CODE BELOW: int childCount(node* p) { bool Cright = false; bool Cleft = false; if(p->right != NULL){ Cright = true; } if(p->left != NULL){
C++ PROGRAMMING
Topic: Binary Search Trees
It doesn't have to be long, as long as you explain what the important parts of the code do. (The code is already implemented and correct, only the explanation needed)
int childCount(node* p) {
bool Cright = false;
bool Cleft = false;
if(p->right != NULL){
Cright = true;
}
if(p->left != NULL){
Cleft = true;
}
if(Cleft == true && Cright== true){
return 2;
}
if(Cright){
return 1;
}
if(Cleft){
return -1;
}
return 0;
}
int set(node* p, int e) {
int elem = p->element;
p->element = e;
return elem;
}
node* addSibling(node* p, int e) {
node* P = p->parent;
if(P != NULL){
if(sibling(p) == NULL){
if(sibling(p) == left(P)){
return addLeft(P,e);
}
return addRight(P,e);
}
}
cout<<"Error"<<endl;
return NULL;
}
void clear() {
clear_postorder(root);
}
void attach(node* p, BTree* t1, BTree* t2) {
if(p->right == NULL && p->left == NULL){
if(t1->root != NULL){
t1->root->parent = p;
p->left = t1->root;
}
if(t2->root != NULL){
t2->root->parent = p;
p->right = t2->root;
}
return;
}
cout<<"Error"<<endl;
}
int remove(node* p) {
if(left(p) == NULL || right(p) == NULL){
node* P = NULL;
node* childNode = NULL;
if(p->parent != NULL){
P = p->parent;
}
else{
P = p;
if(left(P) != NULL){
childNode = P->left;
childNode->parent = NULL;
root = childNode;
}
else{
childNode = P->right;
childNode->parent = NULL;
root = childNode;
}
int elem = P->element;
free(P);
size--;
return elem;
}
if(left(P) == p){
if(left(p) != NULL){
P->left = childNode;
childNode = p->left;
if(p->left != NULL || p->right != NULL){
childNode->parent = P;
}
}
else{
childNode = p->right;
P->left = childNode;
if(p->left != NULL || p->right != NULL){
childNode->parent = P;
}
}
}
else{
if(left(p) != NULL){
childNode = p->left;
P->right = childNode;
if(p->left != NULL || p->right != NULL){
childNode->parent = P;
}
}
else{
childNode = p->right;
P->right = childNode;
if(p->left != NULL || p->right != NULL){
childNode->parent = P;
}
}
}
int elem = p->element;
free(p);
return elem;
size--;
}
cout<<"Error"<<endl;
return 0;
}
Step by step
Solved in 7 steps