Skip to content

Instantly share code, notes, and snippets.

@piusayowale
Created January 28, 2022 07:48
Show Gist options
  • Save piusayowale/709631a97c8cffa4ca5422e5f5e98d42 to your computer and use it in GitHub Desktop.
Save piusayowale/709631a97c8cffa4ca5422e5f5e98d42 to your computer and use it in GitHub Desktop.
Search and extract node in a BST
struct Node
{
Node* left;
Node* right;
int value;
};
Node* insert(Node* tree, int value) {
if (tree == nullptr) {
Node* temp = new Node;
temp->left = nullptr;
temp->right = nullptr;
temp->value = value;
return temp;
}
if (tree->value > value) {
tree->left = insert(tree->left, value);
}
else
{
tree->right = insert(tree->right, value);
}
return tree;
}
void transverse(Node* tree) {
if (tree == nullptr) {
return;
}
transverse(tree->left);
std::cout << tree->value << " ";
transverse(tree->right);
}
Node* search(Node* tree, int value) {
Node* ptr = tree;
if (ptr->value == value) {
tree = ptr;
return tree;
}
while (ptr != nullptr && ptr->value != value)
{
if (ptr->value > value) {
ptr = ptr->left;
}
else if (ptr->value < value) {
ptr = ptr->right;
}
}
tree = ptr;
return tree;
}
int main() {
Node* list = nullptr;
list = insert(list, 5);
list = insert(list, 0);
list = insert(list, 9);
list = insert(list, 1);
list = insert(list, 10);
list = insert(list, -1);
list = insert(list, 10);
list = insert(list, 20);
list = insert(list, 40);
transverse(list);
Node * list2 = search(list, 20);
std::cout << "\n";
transverse(list2);
std::cout << "\n";
transverse(list);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment