bool checkForSubtree(node *head, node *subHead){
bool l,r;
if(subHead){
if(head->data == subHead->data){
if(subHead->left){
l = checkForSubtree(head->left, subHead->left);
}else l = true;
if(subHead->right){
r = checkForSubtree(head->right, subHead->right);
}else r = true;
if(l&&r)return true;
else return false;
}else{
return false;
}
}
}
bool checkSubtree(node *head, node *subHead){
bool left = false, right=false;
if(head){
if(head->data == subHead->data){
if(checkForSubtree(head, subHead))return true;
else{
left = checkSubtree(head->left, subHead);
right = checkSubtree(head->right, subHead);
}
}else{
left = checkSubtree(head->left, subHead);
right = checkSubtree(head->right, subHead);
}
}
if(left || right)return true;
else return false;
}
bool l,r;
if(subHead){
if(head->data == subHead->data){
if(subHead->left){
l = checkForSubtree(head->left, subHead->left);
}else l = true;
if(subHead->right){
r = checkForSubtree(head->right, subHead->right);
}else r = true;
if(l&&r)return true;
else return false;
}else{
return false;
}
}
}
bool checkSubtree(node *head, node *subHead){
bool left = false, right=false;
if(head){
if(head->data == subHead->data){
if(checkForSubtree(head, subHead))return true;
else{
left = checkSubtree(head->left, subHead);
right = checkSubtree(head->right, subHead);
}
}else{
left = checkSubtree(head->left, subHead);
right = checkSubtree(head->right, subHead);
}
}
if(left || right)return true;
else return false;
}
Thanks..
ReplyDeleteNice code...
ReplyDeleteU r genius !!!
ReplyDelete