Skip to content

Latest commit

 

History

History
47 lines (24 loc) · 2.4 KB

File metadata and controls

47 lines (24 loc) · 2.4 KB

Trees

Common Terminology

  • Node - A Tree node is a component which may contain it’s own values, and references to other nodes
  • Root - The root is the node at the beginning of the tree
  • K - A number that specifies the maximum number of children any node may have in a k-ary tree. In a binary tree, k = 2.
  • Left - A reference to one child node, in a binary tree
  • Right - A reference to the other child node, in a binary tree
  • Edge - The edge in a tree is the link between a parent and child node
  • Leaf - A leaf is a node that does not have any children
  • Height - The height of a tree is the number of edges from the root to the furthest leaf

Traversals

An important aspect of trees is how to traverse them. Traversing a tree allows us to search for a node, print out the contents of a tree, and much more! There are two categories of traversals when it comes to trees:

  1. Depth First

  2. Breadth First

Binary Tree Vs K-ary Trees

In all of our examples, we’ve been using a Binary Tree. Trees can have any number of children per node, but Binary Trees restrict the number of children to two (hence our left and right children).

Binary Search Trees

A Binary Search Tree (BST) is a type of tree that does have some structure attached to it. In a BST, nodes are organized in a manner where all values that are smaller than the root are placed to the left, and all values that are larger than the root are placed to the right.

Adding a node

Because there are no structural rules for where nodes are “supposed to go” in a binary tree, it really doesn’t matter where a new node gets placed.

One strategy for adding a new node to a binary tree is to fill all “child” spots from the top down. To do so, we would leverage the use of breadth first traversal. During the traversal, we find the first node that does not have all it’s children filled, and insert the new node as a child. We fill the child slots from left to right.

Big O

The Big O time complexity for inserting a new node is O(n). Searching for a specific node will also be O(n). Because of the lack of organizational structure in a Binary Tree, the worst case for most operations will involve traversing the entire tree. If we assume that a tree has n nodes, then in the worst case we will have to look at n items, hence the O(n) complexity