Binary search tree node search (Java example code)

Table of contents

 

Binary search tree node lookup

Java example code

src/runoob/binary/BinarySearchTreeSearch.java file code:


 

Binary search tree node lookup

The binary search tree does not have subscripts, so for the search operation of the binary search tree, a contain method is defined here to determine whether the binary search tree contains a certain element and returns a Boolean variable. This search operation is also a recursive process. Specifically The code is implemented as follows:

...
// Check whether the binary search tree with node as the root contains a node with the key value, using the recursive algorithm
private boolean contain(Node node, Key key){     if( node == null )         return false;     if( key.compareTo(node.key) == 0 )         return true;     else if( key.compareTo(node.key) < 0 )         return contain( node.left , key );     else // key > node->key         return contain ( node.right , key ); } ...











The following example finds 43 elements in a binary search tree

 

ee6f95c549935c28b9fa470a543f4a7d.png

(1) The element 43 is larger than the root node 42, and the comparison needs to be continued at the right child node.

 

a41a37a56ab04144ffae2e68c7528753.png

(2) Element 43 is smaller than 59, and the comparison needs to be continued at the left child node.

 

3409a5751812ecb1be27287e7108b2cd.png

(3) Element 43 is smaller than 51, so comparison needs to continue at the left child node.

 

66b3f3a1c679f37b7e50cbada6fe9fd3.png

(4) Find the left child node 43 of 51, which is exactly equal to the sum, and end.

If you need to find the value corresponding to the key, the code is as follows:

...
// Find the value corresponding to the key in the binary search tree with node as the root, recursive algorithm
// If the value does not exist, return NULL
private Value search(Node node, Key key){     if( node == null )         return null;     if( key.compareTo(node.key) == 0 )         return node.value;     else if( key.compareTo(node.key) < 0 )         return search( node.left , key );     else / / key > node->key         return search( node.right, key ); } ...











Java example code

Source code package download: Download https://www.runoob.com/wp-content/uploads/2020/09/runoob-algorithm-BinarySearchTreeSearch.zip

src/runoob/binary/BinarySearchTreeSearch.java file code:

package runoob.binary;

/**
 * Binary search tree search
 */
public class BinarySearchTreeSearch<Key extends Comparable<Key>, Value> {     // The nodes in the tree are private classes, and the outside world does not need to know the details of the binary search tree nodes. Implement     private class Node {         private Key key;         private Value value;         private Node left, right;         public Node(Key key, Value value) {             this.key = key;             this.value = value;             left = right = null;         }     }     / / Root node     private Node root;     // Number of nodes in the tree species     private int count;     // Constructor, constructs an empty binary search tree by default     public BinarySearchTreeSearch() {



















        root = null;
        count = 0;
    }

    // Returns the number of nodes in the binary search tree
    public int size() {         return count;     }     // Returns whether the binary search tree is empty     public boolean isEmpty() {         return count == 0;     }     // Insert a new (key, value) data pair into the binary search tree     public void insert(Key key, Value value){         root = insert(root, key, value);     }     // Check whether the binary search tree The key key exists     public boolean contain(Key key){         return contain(root, key);     }     // Search the value corresponding to the key key in the binary search tree. If this value does not exist, null is returned     public Value search(Key key){         return search(root, key);





















    }


    //********************
    //* Auxiliary function for binary search tree
    //**************** ****

    // Insert node (key, value) into the binary search tree with node as the root, using the recursive algorithm //
    Return the root of the binary search tree after inserting the new node
    private Node insert(Node node, Key key , Value value){         if( node == null ){             count ++;             return new Node(key, value);         }         if( key.compareTo(node.key) == 0 )             node.value = value;         else if( key.compareTo(node.key) < 0 )             node.left = insert( node.left , key, value);         else // key > node->key             node.right = insert( node.right, key, value);         return node;














    }

    // Check whether the binary search tree with node as the root contains a node with the key value, using the recursive algorithm
    private boolean contain(Node node, Key key){         if( node == null )             return false;         if( key. compareTo(node.key) == 0 )             return true;         else if( key.compareTo(node.key) < 0 )             return contain( node.left , key );         else // key > node->key             return contain( node .right , key );     }     // Find the value corresponding to key in the binary search tree with node as the root, recursive algorithm     // If value does not exist, return NULL     private Value search(Node node, Key key){         if ( node == null )             return null;         if( key. compareTo(node. key) == 0 )




















            return node.value;
        else if( key.compareTo(node.key) < 0 )
            return search( node.left , key );
        else // key > node->key
            return search( node.right, key );
    }
}

 

Guess you like

Origin blog.csdn.net/2301_78835635/article/details/132296541