traverses graph, prioritizing depth first (goes as deep as possible)

order

  1. pre-order
  2. in-order
  3. post-order

iterative

uses a stack data-structure to prepare sequence of steps

recursive

uses the call stack instead