// Return true if the subtree rooted at root // contains value somewhere in it bool contains(node* root,int value) { if(root == nullptr) return false; if(root->data == value) return true; if(value < root->data) return contains(root->left,value); else return contains(root->right,value); } bool has_duplicates(node *root) { if(root == nullptr) return false; if(contains(root->left,root->data)) return true; if(contains(root->right,root->data)) return true; return has_duplicates(root->left) || has_duplicates(root->right); }