Cây splay (splay tree) được định nghĩa là cây tìm kiếm nhị phân tự cân bằng (self-balancing binary search tree) với tính chất bổ sung: các phần tử gần đây được truy cập nhanh chóng truy cập lại. Các thao tác cơ bản như chèn (insertion), tra cứu (look-up), xóa (removal) được thực hiện bởi cây splay trong thời gian O(log n) khấu hao (amortized). Với nhiều chuỗi thao tác không ngẫu nhiên, cây splay hoạt động tốt hơn các cây tìm kiếm khác, ngay cả khi mẫu cụ thể của chuỗi không biết. Tất cả thao tác bình thường trên cây tìm kiếm nhị phân được kết hợp với một thao tác cơ bản, gọi là splaying.
Giả sử với mỗi nút a, ta lưu một số thực key(a).
Trong bất kỳ cây tìm kiếm nhị phân, cây con trái của nút a chứa các mục có giá trị "key" nhỏ hơn key(a), cây con phải chứa các mục có giá trị "key" lớn hơn key(a).
Trong cây splay, ta trước tìm mục truy vấn, ví dụ a, như cây tìm kiếm nhị phân thông thường — so sánh mục truy vấn với giá trị ở gốc, nếu nhỏ hơn thì đệ quy tìm cây con trái, nếu lớn hơn thì đệ quy tìm cây con phải, nếu bằng thì xong. Sau đó, nói một cách không chính thức, ta nhìn vào mỗi cặp tổ tiên liên tiếp không giao nhau của a, ví dụ b = parent(a) và c = parent(b), và thực hiện một cặp xoay nhất định. Kết quả của các xoay này, a đến vị trí của c.
Trường hợp a có số lẻ tổ tiên thích hợp (proper ancestors), thì tổ tiên của a (là con của gốc) cũng phải xử lý riêng, trong trường hợp cuối (terminal case) — xoay cạnh giữa a và gốc. Bước này gọi là bước zig (zig step).
Nếu a và b đều là con trái hoặc đều là con phải của cha tương ứng, thì ta trước xoay cạnh giữa b và cha c của nó, sau đó xoay cạnh giữa a và cha b của nó. Bước này gọi là bước zig-zig (zig-zig step).
Nếu a là con trái (tương ứng phải) và b là con phải (tương ứng trái), thì ta trước xoay cạnh giữa a và b, sau đó giữa a và c, bước này gọi là bước zig-zag (zig-zag step).