Trees

2 minute read

a data structure that is constructed with nodes, where each has some value and may point to child-nodes, which recursively form subtrees in the tree.

The first node in a tree is called a root, some nodes on the bottom of the tree may not have child-nodes, and they are referred to as a leaf-nodes or just leaves.
The height of a tree is the length of its longest branch. Branches are paths between root, and it leaves.
The depth of a tree node is a distance from its tree’s root, it’s also known as a node’s level in the tree.

A tree is basically a graph that’s connected, directed and acyclic, that has an explicit root node, and whose nodes all have a single parent (except a root node which hasn’t parent). You may find out more about graphs here In most of the implementations nodes does not have a pointer to their parent, but they can if it’s desired.

There are many types of trees, like binary trees, heaps, AVL and more.

  • Binary Tree

A tree whose elements have at most two children nodes.

The structure of a binary tree is such that many of its operations have a logarithmic time complexity, making the binary tree an incredibly attractive and commonly used data structure. Why its usually logarithmic complexity, because whenever we choose one of child-node we reject the second half.

Read more about logarithms here.

  • K-ary Tree

A tree whose nodes have up to k child-nodes. A binary tree is a k-ary tree where k==2.

  • Complete Binary Tree

A Binary Tree that’s almost perfect. It’s a tree in which all the levels are completely filled except possibly the lowest one, which is filled from the left. A complete binary tree is just like a full binary tree, but with two major differences. All the leaf elements must lean towards the left.

img

  • Perfect Binary Tree

A Binary Tree whose interior nodes all have two child-nodes whose leaf nodes all have the same depth. Example:

img

  • Balanced Binary Tree

A Binary Tree whose nodes all have left and right subtrees whose heights differ by no more than 1.

A balanced binary tree is such that the logarithmic time complexity of its operations is maintained.

img

Inserting a node at the bottom of the following imbalanced binary tree right subtree would clearly not be a logarithmic time operation, since it would involve traversing through most tree nodes.

  • Full Binary Tree

A Binary Tree whose nodes all have either two child-nodes or zero child-nodes.

img

Comments