Iterative searching in Binary Search Tree

16 Jul, 2021
Given a binary search tree and a key. Check the given key exists in BST or not without recursion. 
Please refer binary search tree insertion for recursive search.  
C++
Java
Python3
C#
Javascript
// C++ program to demonstrate searching operation// in binary search tree without recursion#include <bits/stdc++.h>using namespace std; struct Node {    int data;    struct Node *left, *right;}; // Function to check the given key exist or notbool iterativeSearch(struct Node* root, int key){    // Traverse until root reaches to dead end    while (root != NULL) {        // pass right subtree as new tree        if (key > root->data)            root = root->right;         // pass left subtree as new tree        else if (key < root->data)            root = root->left;        else            return true; // if the key is found return 1    }    return false;} // A utility function to create a new BST Nodestruct Node* newNode(int item){    struct Node* temp = new Node;    temp->data = item;    temp->left = temp->right = NULL;    return temp;} /* A utility function to insert a new Node with   given key in BST */struct Node* insert(struct Node* Node, int data){    /* If the tree is empty, return a new Node */    if (Node == NULL)        return newNode(data);     /* Otherwise, recur down the tree */    if (data < Node->data)        Node->left = insert(Node->left, data);    else if (data > Node->data)        Node->right = insert(Node->right, data);     /* return the (unchanged) Node pointer */    return Node;} // Driver Program to test above functionsint main(){    /* Let us create following BST              50            /    \          30      70         /  \    /  \       20   40  60   80 */    struct Node* root = NULL;    root = insert(root, 50);    insert(root, 30);    insert(root, 20);    insert(root, 40);    insert(root, 70);    insert(root, 60);    insert(root, 80);    if (iterativeSearch(root, 15))        cout << "Yes";    else        cout << "No";    return 0;}
// Java program to demonstrate searching operation// in binary search tree without recursionimport java.util.*; class GFG {     static class Node {        int data;        Node left, right;    };     // Function to check the given key exist or not    static boolean iterativeSearch(Node root, int key)    {        // Traverse until root reaches to dead end        while (root != null) {            // pass right subtree as new tree            if (key > root.data)                root = root.right;             // pass left subtree as new tree            else if (key < root.data)                root = root.left;            else                return true; // if the key is found return 1        }        return false;    }     // A utility function to create a new BST Node    static Node newNode(int item)    {        Node temp = new Node();        temp.data = item;        temp.left = temp.right = null;        return temp;    }     /* A utility function to insert a new Node withgiven key in BST */    static Node insert(Node Node, int data)    {        /* If the tree is empty, return a new Node */        if (Node == null)            return newNode(data);         /* Otherwise, recur down the tree */        if (data < Node.data)            Node.left = insert(Node.left, data);        else if (data > Node.data)            Node.right = insert(Node.right, data);         /* return the (unchanged) Node pointer */        return Node;    }     // Driver code    public static void main(String args[])    {        /* Let us create following BST            50            / \        30 70        / \ / \    20 40 60 80 */        Node root = null;        root = insert(root, 50);        insert(root, 30);        insert(root, 20);        insert(root, 40);        insert(root, 70);        insert(root, 60);        insert(root, 80);        if (iterativeSearch(root, 15))            System.out.println("YES");        else            System.out.println("NO");    }} // This code is contributed by Arnab Kundu
# Python program to demonstrate searching operation# in binary search tree without recursionclass newNode:     # Constructor to create a new node    def __init__(self, data):        self.data = data        self.left = None        self.right = None # Function to check the given# key exist or notdef iterativeSearch(root, key):         # Traverse until root reaches    # to dead end    while root != None:                 # pass right subtree as new tree        if key > root.data:            root = root.right         # pass left subtree as new tree        elif key < root.data:            root = root.left        else:            return True # if the key is found return 1    return False # A utility function to insert a# new Node with given key in BSTdef insert(Node, data):         # If the tree is empty, return    # a new Node    if Node == None:        return newNode(data)     # Otherwise, recur down the tree    if data < Node.data:        Node.left = insert(Node.left, data)    elif data > Node.data:        Node.right = insert(Node.right, data)     # return the (unchanged) Node pointer    return Node # Driver Codeif __name__ == '__main__':         # Let us create following BST    # 50    # 30     70    # / \ / \    # 20 40 60 80    root = None    root = insert(root, 50)    insert(root, 30)    insert(root, 20)    insert(root, 40)    insert(root, 70)    insert(root, 60)    insert(root, 80)    if iterativeSearch(root, 15):        print("Yes")    else:        print("No") # This code is contributed by PranchalK
// C# program to demonstrate searching operation// in binary search tree without recursionusing System; class GFG {     public class Node {        public int data;        public Node left, right;    };     // Function to check the given key exist or not    static bool iterativeSearch(Node root, int key)    {        // Traverse until root reaches to dead end        while (root != null) {            // pass right subtree as new tree            if (key > root.data)                root = root.right;             // pass left subtree as new tree            else if (key < root.data)                root = root.left;            else                return true; // if the key is found return 1        }        return false;    }     // A utility function to create a new BST Node    static Node newNode(int item)    {        Node temp = new Node();        temp.data = item;        temp.left = temp.right = null;        return temp;    }     /* A utility function to insert a new Node withgiven key in BST */    static Node insert(Node Node, int data)    {        /* If the tree is empty, return a new Node */        if (Node == null)            return newNode(data);         /* Otherwise, recur down the tree */        if (data < Node.data)            Node.left = insert(Node.left, data);        else if (data > Node.data)            Node.right = insert(Node.right, data);         /* return the (unchanged) Node pointer */        return Node;    }     // Driver code    public static void Main(String[] args)    {        /* Let us create following BST            50            / \        30 70        / \ / \    20 40 60 80 */        Node root = null;        root = insert(root, 50);        insert(root, 30);        insert(root, 20);        insert(root, 40);        insert(root, 70);        insert(root, 60);        insert(root, 80);        if (iterativeSearch(root, 15))            Console.WriteLine("YES");        else            Console.WriteLine("NO");    }} // This code has been contributed by 29AjayKumar
<script> // JavaScript program to// demonstrate searching operation// in binary search tree without recursion class Node {    constructor() {        this.data = 0;        this.left = null;        this.right = null;    }}     // Function to check the given key exist or not    function iterativeSearch(root , key)    {        // Traverse until root reaches to dead end        while (root != null) {            // pass right subtree as new tree            if (key > root.data)                root = root.right;             // pass left subtree as new tree            else if (key < root.data)                root = root.left;            else            // if the key is found return 1                return true;        }        return false;    }     // A utility function to create a new BST Node    function newNode(item)    {        var temp = new Node();        temp.data = item;        temp.left = temp.right = null;        return temp;    }     /* A utility function to insert a new Node withgiven key in BST */    function insert(Node , data)    {        /* If the tree is empty, return a new Node */        if (Node== null)            return newNode(data);         /* Otherwise, recur down the tree */        if (data < Node.data)            Node.left = insert(Node.left, data);        else if (data > Node.data)            Node.right = insert(Node.right, data);         /* return the (unchanged) Node pointer */        return Node;    }     // Driver code             /* Let us create following BST            50            / \        30 70        / \ / \    20 40 60 80 */        var root = null;        root = insert(root, 50);        insert(root, 30);        insert(root, 20);        insert(root, 40);        insert(root, 70);        insert(root, 60);        insert(root, 80);        if (iterativeSearch(root, 15))            document.write("YES");        else            document.write("NO");             // This code is contributed by todaysgaurav </script>
Output:  
No
 
Iterative searching in Binary Search Tree | GeeksforGeeks - YouTubeGeeksforGeeks532K subscribersIterative searching in Binary Search Tree | GeeksforGeeksWatch laterShareCopy linkInfoShoppingTap to unmuteIf playback doesn't begin shortly, try restarting your device.You're signed outVideos you watch may be added to the TV's watch history and influence TV recommendations. To avoid this, cancel and sign in to YouTube on your computer.CancelConfirmMore videosMore videosSwitch cameraShareInclude playlistAn error occurred while retrieving sharing information. Please try again later.Watch on0:000:000:00 / 2:01•Live•<div class="player-unavailable"><h1 class="message">An error occurred.</h1><div class="submessage"><a href="https://www.youtube.com/watch?v=Re-HdpXo1is" target="_blank">Try watching this video on www.youtube.com</a>, or enable JavaScript if it is disabled in your browser.</div></div>
PranchalKatiyar
andrew1234
29AjayKumar
todaysgaurav
gabaa406
Binary Search Tree
Binary Search Tree
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.