←Back to Tutorials

Trees: Fundamentals & Advanced

Master tree data structures from basics to advanced: binary trees, BSTs, balanced trees, heaps, tries, and when to use eachβ€”with code, pros/cons, and use cases.

75 minutes
11Detailed Sections
Senior Level

A tree is a hierarchical data structure of nodes connected by edges. Unlike arrays or linked lists, it has a single root and no cycles: every node (except the root) has exactly one parent.

  • Key terms: The root is the top node. A child has one parent; nodes with the same parent are siblings. A leaf has no children; an internal node has at least one. Depth is the number of edges from root to a node; height is the maximum depth in the tree (or in a subtree).

Trees model real-world hierarchies (file systems, org charts), expressions (parse trees), and ordered data (BST). In code, recursion is natural: do something at this node, then recurse on children.

Key Takeaways

1
Tree: Hierarchical, acyclic; one root, each node has one parent
2
Root: Top node; leaf: no children; internal: has children
3
Depth: Edges root β†’ node; height: max depth in subtree
4
Recursion: Base case = null or leaf; recurse on children
5
Use cases: File systems, DOM, org charts, parse trees
6
Common pitfall: Forgetting null checks on children
7
Senior takeaway: Most tree problems are "visit + recurse"

Visual Diagram


β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Tree Terminology                     β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚                         (root)      depth 0             β”‚
β”‚                        /    \                            β”‚
β”‚                    (node)  (node)   depth 1   siblings   β”‚
β”‚                    /   \      \                          β”‚
β”‚               (node) (leaf) (leaf) depth 2               β”‚
β”‚                 |                                         β”‚
β”‚               (leaf)        depth 3  height of root = 3  β”‚
β”‚                                                          β”‚
β”‚  Path: root β†’ ... β†’ node (unique, no cycles)             β”‚
β”‚  Subtree: node + all descendants                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Sign in to unlock

Sign In Free