Trees and Traversals — ELI5

Think about your family tree. At the top is a grandparent. Below them are their children. Below the children are grandchildren. Each person connects downward to the people who came after them.

A tree in programming works the same way, but upside down compared to a real tree — the “root” is at the top, and the “leaves” are at the bottom.

Each spot in the tree is called a node. Each node can have children — nodes that hang below it. A node with no children is called a leaf (like the tip of a branch with no further branches).

Trees are everywhere in computing:

  • Your files and folders are a tree. The main drive is the root. Folders are nodes. Files inside them are leaves.
  • A website menu with dropdowns is a tree. The menu bar is the root, and each dropdown item branches further.
  • A decision flowchart is a tree. “Is it raining?” branches into “Yes” and “No,” each leading to further choices.

The most common type is a binary tree, where every node has at most two children — a left child and a right child.

Now, how do you visit every node in a tree? That is called traversal. There are different orders:

  • Top-down (pre-order): Visit the parent first, then the children. Like reading an outline from top to bottom.
  • Bottom-up (post-order): Visit all children first, then the parent. Like calculating folder sizes — you need subfolder sizes before you can total the parent.
  • Level by level: Visit all nodes at depth 1, then depth 2, then depth 3. Like reading a family tree row by row.

One thing to remember: Trees let you organize data in layers. Whenever information has a natural hierarchy — folders, categories, decisions — a tree is probably the right shape.

pythondata-structurestrees

See Also