Trees
BST Search
Search a binary search tree for one present and one absent value.
Algorithm
The canonical tree is 4(2(1,3),6(5,7)), so this Java DSA
implementation can be compared directly with the rest of the DSA track.
search path
A comparison chooses one subtree at each step, so whole branches are skipped.
Visual walkthrough
Basic Implementation
Basic.java
import java.util.*;
public class Basic {
static class Node {
int value;
Node left;
Node right;
Node(int value) { this.value = value; }
Node(int value, Node left, Node right) { this.value = value; this.left = left; this.right = right; }
}
static String render(Node node) {
if (node == null) return "_";
if (node.left == null && node.right == null) return Integer.toString(node.value);
return node.value + "(" + render(node.left) + "," + render(node.right) + ")";
}
static Node sampleTree() {
return new Node(4, new Node(2, new Node(1), new Node(3)), new Node(6, new Node(5), new Node(7)));
}
static boolean search(Node root, int target) { Node node = root; while (node != null) { if (target == node.value) return true; node = target < node.value ? node.left : node.right; } return false; }
public static void main(String[] args) { Node root = sampleTree(); System.out.println(search(root, 5) ? "5 found" : "5 not found"); System.out.println(search(root, 8) ? "8 found" : "8 not found"); }
}
Complexity
- Time: O(h) per search
- Space: O(1) iterative
Implementation notes
- Java represents the tree with
Nodeobjects containing primitiveint valueplusNode leftandNode rightreference fields. Missing children arenull. searchis iterative, not recursive: it copies the root reference into a localNode nodecursor and runswhile (node != null).- Each step compares the primitive
targetwithnode.value. Equality returnstrue; otherwisenode = target < node.value ? node.left : node.rightfollows the next child reference. Anullcursor exits the loop and returnsfalse. - The replay shows the found path for
5as4 -> right,6 -> left, then match at5; the missing search for8walks right from4,6, and7before reachingnull. The search allocates no new nodes, so GC relevance is limited to the prebuilt tree objects.