Binary Trees
Also Known As
BST
binary search tree
AVL tree
Red-Black tree
TL;DR
A hierarchical structure where each node has at most two children — Binary Search Trees enable O(log n) search, while balanced variants (AVL, Red-Black) guarantee it.
Explanation
A binary tree has nodes with left and right children. Binary Search Tree (BST): left child < parent < right child — enables O(log n) search, insert, delete on balanced trees. Unbalanced BSTs degrade to O(n). Self-balancing trees (AVL, Red-Black) maintain O(log n) automatically. Traversals: in-order (left-root-right, gives sorted output on BST), pre-order (root-left-right), post-order (left-right-root). Heaps are specialised binary trees. PHP's SplMaxHeap/SplMinHeap are heap implementations.
Diagram
flowchart TD
ROOT[8 root] --> L[3] & R[10]
L --> LL[1] & LR[6]
LR --> LRL[4] & LRR[7]
R --> RR[14]
RR --> RRL[13]
INFO[BST: left < parent < right<br/>In-order: 1 3 4 6 7 8 10 13 14]
style ROOT fill:#6e40c9,color:#fff
style L fill:#1f6feb,color:#fff
style R fill:#238636,color:#fff
Common Misconception
✗ A binary search tree always gives O(log n) search — only balanced BSTs guarantee O(log n); inserting sorted data into a naive BST creates a linked list with O(n) operations.
Why It Matters
Database indexes (B-Trees), PHP's SplHeap, and file system directories all use tree structures — understanding trees explains why index column order matters and how heap-based priority queues work.
Common Mistakes
- Using a naive BST with sorted input — produces a degenerate linear structure; use a self-balancing tree.
- Recursive tree traversal without depth limit — deep trees cause stack overflow.
- Confusing BST (ordered) with heap (parent > children, not fully ordered) — different operations, different guarantees.
- Not understanding that B-Trees (database indexes) are not binary — B-Tree nodes can have many children.
Code Examples
✗ Vulnerable
// Naive BST with sorted input — degenerates to linked list:
$bst = new BST();
foreach (range(1, 10000) as $n) {
$bst->insert($n); // Each node has only right child
}
$bst->search(9999); // O(n) — 9999 comparisons, not O(log n)
✓ Fixed
// PHP SplMinHeap — O(log n) insert and extract-min:
$heap = new SplMinHeap();
foreach ([5, 2, 8, 1, 9, 3] as $n) {
$heap->insert($n); // O(log n)
}
while (!$heap->isEmpty()) {
echo $heap->extract() . ' '; // 1 2 3 5 8 9 — sorted, O(n log n) total
}
Tags
🤝 Adopt this term
£79/year · your link shown here
Added
15 Mar 2026
Edited
22 Mar 2026
Views
29
🤖 AI Guestbook educational data only
|
|
Last 30 days
Agents 0
No pings yet today
Amazonbot 8
Google 5
Perplexity 5
Unknown AI 3
Ahrefs 2
Also referenced
How they use it
crawler 21
crawler_json 1
pre-tracking 1
Related categories
⚡
DEV INTEL
Tools & Severity
🟢 Low
⚙ Fix effort: Medium
⚡ Quick Fix
When implementing tree traversal in PHP, use an explicit stack array instead of recursion to avoid stack overflow on deep trees
📦 Applies To
PHP 5.0+
web
cli
🔗 Prerequisites
🔍 Detection Hints
Recursive tree traversal without depth limit on user-controlled tree depth; PHP stack overflow on deep recursion
Auto-detectable:
✗ No
xdebug
⚠ Related Problems
🤖 AI Agent
Confidence: Low
False Positives: High
✗ Manual fix
Fix: Medium
Context: Function
Tests: Update