Binary Tree

Definition

A binary tree is a type of tree where each node has up to two children. We can have a ternary tree where each node has up to 3 children. Or a quadtree where each internal node has exactly 4 children.

public class TreeNode {
    int key;
    TreeNode leftChild;
    TreeNode rightChild;
    public TreeNode(int value) {
        key = value;
        leftChild = null; // not necessary 
        rightChild = null; // java does this during initialization
    }
}

or an alternative definition with array

public class TreeNode {
    public String name;
    public Node[] children;
}

DFS in Binary Tree

Binary Tree Traversal

Tree traversal is the process of visiting each node exactly once (a special case of graph traversal). There are three common ways to traverse them in depth-first order:

  • Preorder - root, leftSubtree, rightSubtree
  • Inorder - leftSubtree, root, rightSubtree
  • Postorder - leftSubtree, rightSubtree, root

Example:

+    1
   /   \
  2     3
 / \
4   5

Preorder: 1 245 3
Inorder: 425 1 3
Postorder: 452 3 1

Traverse vs Divide & Conquer vs non-recursive

non-recursive needs an explicit stack

Binary Search Tree

  • Insert
  • Find
  • Remove
  • Validate

BFS in Binary Tree

Binary tree level search

References

Wikipedia Tree Traversal

results matching ""

    No results matching ""