Kazi Rahamatullah
Kazi Rahamatullah
AboutProjectsBlogContact
UsesBooks
ResumeView CV
Kazi Rahamatullah

© Copyright 2026 Kazi Rahamatullah

AboutProjectsBlogBooksUses
Twitter/XGitHubProduct HuntCodeSandbox
Back to Blog
DSATreesTraversal

Pre-order Tree Traversal — Root First Visualized

Learn pre-order traversal — visit root before left and right subtrees, step-by-step visualizer, recursive code, and use cases.

Jul 4, 20262 min read

Introduction

Pre-order traversal visits nodes in Root → Left → Right order. Also called NLR (Node, Left, Right).

Used to copy trees, serialize structure, and evaluate prefix expressions.

Quick index

#Section
1Traversal order
2Interactive visualizer
3Full implementation
4When to use

1. Traversal order

For tree [4, 2, 6, 1, 3, 5, 7]:

Pre-order: 4 → 2 → 1 → 3 → 6 → 5 → 7

Visit root first, then entire left subtree, then entire right subtree.

Back to index


2. Interactive visualizer

Pre-order Traversal — Root → Left → Right

Visit root before subtrees — used to copy trees and prefix expression parsing.

4
2
1
3
6
5
7

Pre-order: Root → Left → Right.

Pre-order traversal

function preOrder(node) {
if (!node) return
visit(node)root first
preOrder(node.left)
preOrder(node.right)
}

Root → Left → Right

Order

NLR

Uses

Copy

Time

O(n)

Back to index


3. Full implementation

js
function preOrder(node, result = []) {
  if (!node) return result
  result.push(node.value) // visit root FIRST
  preOrder(node.left, result)
  preOrder(node.right, result)
  return result
}
 
function preOrderIterative(root) {
  if (!root) return []
  const stack = [root],
    result = []
  while (stack.length) {
    const node = stack.pop()
    result.push(node.value)
    if (node.right) stack.push(node.right)
    if (node.left) stack.push(node.left)
  }
  return result
}

Function calls with output

js
// ── Demo calls — output shown on the right ──
// tree:       4
//            / \
//           2   6  ...
 
preOrder(root) // → [4, 2, 1, 3, 6, 5, 7]
preOrderIterative(root) // → [4, 2, 1, 3, 6, 5, 7]
preOrder(null) // → []

Back to index


4. When to use

Use caseWhy pre-order
Copy/clone treeCreate parent before children
Prefix expressionsOperator before operands
File system walkPrint directory before contents
Serialize treeParent-first preserves structure

Interview Answer

"Pre-order vs in-order vs post-order?"

Pre-order: root first (NLR). In-order: root middle (LNR) — sorted on BST. Post-order: root last (LRN) — safe delete.

Back to index


Summary

Pre-order = root before subtrees — O(n) time, O(h) recursion stack.

Next reads: In-order Traversal · Post-order Traversal

Share this article

XLinkedInFacebook
Kazi Rahamatullah

Written by

Kazi Rahamatullah

FullStack Developer

X / TwitterGitHubLinkedIn

Subscribe to my newsletter

Stay up to date and get notified when I share new contents.

No spam ever, unsubscribe anytime