- Take the entire data set as input
- Look for a split that maximizes the separation of the classes. A split is any test that divides the data in two sets
- Apply the split to the input data (divide step)
- Re-apply steps 1 to 2 to the divided data
- Stop when you meet some stopping criteria
- This step is called pruning. Clean up the tree when you went too far doing splits.