K-D trees are binary search trees for organizing points in a k-dimensional space. This document describes a 2D K-D tree, where each node contains an (x,y) point and levels alternate between using the x-coordinate and y-coordinate for sorting. K-D trees provide efficient lookup of nearest neighbors and range queries, with insertion and retrieval taking O(log N) time on average for a balanced tree of N points.