Trees
BST Insert
Insert values into a binary search tree by comparing at each node.
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.
binary search tree
Values smaller than a node go left; larger values go right.
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 Node insert(Node root, int value) { if (root == null) return new Node(value); if (value < root.value) root.left = insert(root.left, value); else root.right = insert(root.right, value); return root; }
public static void main(String[] args) { Node root = null; for (int value : new int[] {4, 2, 6, 1, 3, 5, 7}) root = insert(root, value); System.out.println(render(root)); }
}
Complexity
- Time: O(h) per insert
- Space: O(n)
Implementation notes
- Java represents each tree node as a
Nodeobject with primitiveint valueplusNode leftandNode rightreference fields. Missing children arenull. mainstarts withNode root = nulland reassignsroot = insert(root, value)for each value, so the firstroot == nullcase can return the new root object.insertis recursive: anullsubtree allocatesnew Node(value);value < root.valueassignsroot.left = insert(root.left, value); otherwiseroot.right = insert(root.right, value). Equal values would follow the right branch because there is no separate duplicate case.- The replay exposes each comparison path and rendered tree state, ending with
4(2(1,3),6(5,7)); it also keeps the sorted-insert contrast1(_,2(_,3(_,4)))to show the unbalanced O(n) path. Allocated nodes are ordinary JVM heap objects managed by GC.