Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

1.

Binary Tree
A binary Tree is defined as a Tree data structure with at most 2 children. Since each element in
a binary tree can have only 2 children, we typically name them the left and right child.
Tree is a hierarchical data structure. Main uses of trees include maintaining hierarchical data,
providing moderate access and insert/delete operations.

Binary Tree Representation

A Binary tree is represented by a pointer to the topmost node (commonly known as the “root”) of the
tree. If the tree is empty, then the value of the root is NULL. Each node of a Binary Tree contains the
following parts:
1. Data
2. Pointer to left child / address of left child
3. Pointer to right child / address of right child

In C, we can represent a tree node using structures. In other languages, we can use classes as part of
their OOP feature. Below is an example of a tree node with integer data.
Implementation of Binary Tree:
OPERATION ON BT
1. Create
2. Insert
3. Remove / Delete
4. Search
5. Traversal
1.Depth First Search or DFS
 Inorder Traversal
 Preorder Traversal
 Postorder Traversal
2.Level Order Traversal or Breadth First Search or BFS
3.Boundary Traversal
4.Diagonal Traversal
Auxiliary Operation On Binary Tree:
 Finding the height of the tree
 Find the level of a node of the tree
 Finding the size of the entire tree.

Applications of Binary Tree:


 In compilers, Expression Trees are used which is an application of binary trees.
 Huffman coding trees are used in data compression algorithms.
 Priority Queue is another application of binary tree that is used for searching maximum
or minimum in O(1) time complexity.
 Represent hierarchical data.
 Used in editing software like Microsoft Excel and spreadsheets.
 Useful for indexing segmented at the database is useful in storing cache in the system,
 Syntax trees are used for most famous compilers for programming like GCC, and
AOCL to perform arithmetic operations.
 For implementing priority queues.
 Used to find elements in less time (binary search tree)
 Used to enable fast memory allocation in computers.
 Used to perform encoding and decoding operations.
 Binary trees can be used to organize and retrieve information from large datasets, such
as in inverted index and k-d trees.
 Binary trees can be used to represent the decision-making process of computer-
controlled characters in games, such as in decision trees.
 Binary trees can be used to implement searching algorithms, such as in binary search
trees which can be used to quickly find an element in a sorted list.
 Binary trees can be used to implement sorting algorithms, such as in heap sort which
uses a binary heap to sort elements efficiently.

Properties of Binary Tree


1. The maximum number of nodes at level ‘l’ of a binary tree is 2 l:
Note: Here level is the number of nodes on the path from the root to the node (including root and
node). The level of the root is 0
This can be proved by induction:
For root, l = 0, number of nodes = 2 0 = 1
Assume that the maximum number of nodes on level ‘l’ is 2 l
Since in a Binary tree every node has at most 2 children, the next level would have twice nodes, i.e.
2 * 2l
2. The Maximum number of nodes in a binary tree of height ‘h’ is 2 h – 1:
Note: Here the height of a tree is the maximum number of nodes on the root-to-leaf path. The
height of a tree with a single node is considered as 1
This result can be derived from point 2 above. A tree has maximum nodes if all levels have
maximum nodes. So the maximum number of nodes in a binary tree of height h is 1 + 2 + 4 + .. +
2h-1. This is a simple geometric series with h terms and the sum of this series is 2 h– 1.
In some books, the height of the root is considered as 0. In this convention, the above formula
becomes 2h+1 – 1
3. In a Binary Tree with N nodes, the minimum possible height or the minimum number of levels is
Log2(N+1):
Each level should have at least one element, so the height cannot be more than N. A binary tree of
height ‘h’ can have a maximum of 2 h – 1 nodes (previous property). So the number of nodes will be
less than or equal to this maximum value
N <= 2h – 1
2h >= N+1
log2(2h) >= log2(N+1) (Taking log both sides)
hlog22 >= log2(N+1) (h is an integer)
h >= | log2(N+1) |
So the minimum height possible is | log 2(N+1) |
4. A Binary Tree with L leaves has at least | Log 2L |+ 1 levels:
A Binary tree has the maximum number of leaves (and a minimum number of levels) when all
levels are fully filled. Let all leaves be at level l, then below is valid for the number of leaves L
L <= 2l-1 [From Point 1] [Note: Here, consider level of root node as 1]
l = | Log2L | + 1
where l is the minimum number of levels
5. In a Binary tree where every node has 0 or 2 children, the number of leaf nodes is always one
more than nodes with two children:
L=T+1
Where L = Number of leaf nodes
T = Number of internal nodes with two children
Proof:
No. of leaf nodes (L) i.e. total elements present at the bottom of tree = 2 h-1 (h is height of tree)
No. of internal nodes = {total no. of nodes} – {leaf nodes} = { 2 h – 1 } – {2h-1} = 2h-1 (2-1) – 1 = 2h-
1
–1
So , L = 2h-1
T = 2h-1 – 1
Therefore L = T + 1
Hence proved
6. In a non-empty binary tree, if n is the total number of nodes and e is the total number of edges,
then e = n-1:
Every node in a binary tree has exactly one parent with the exception of the root node. So if n is the
total number of nodes then n-1 nodes have exactly one parent. There is only one edge between any
child and its parent. So the total number of edges is n-1.

Some extra properties of binary tree are:

 Each node in a binary tree can have at most two child nodes: In a binary tree, each
node can have either zero, one, or two child nodes. If a node has zero children, it is
called a leaf node. If a node has one child, it is called a unary node. If a node has two
children, it is called a binary node.
 The node at the top of the tree is called the root node: The root node is the first node
in a binary tree and all other nodes are connected to it. All other nodes in the tree are
either child nodes or descendant nodes of the root node.
 Nodes that do not have any child nodes are called leaf nodes: Leaf nodes are the
endpoints of the tree and have no children. They represent the final result of the tree.
 The height of a binary tree is defined as the number of edges from the root node to
the deepest leaf node: The height of a binary tree is the length of the longest path from
the root node to any of the leaf nodes. The height of a binary tree is also known as its
depth.
 In a full binary tree, every node except the leaves has exactly two children: In a full
binary tree, all non-leaf nodes have exactly two children. This means that there are no
unary nodes in a full binary tree.
 In a complete binary tree, every level of the tree is completely filled except for the
last level, which can be partially filled: In a complete binary tree, all levels of the tree
except the last level are completely filled. This means that there are no gaps in the tree
and all nodes are connected to their parent nodes.
 In a balanced binary tree, the height of the left and right subtrees of every node
differ by at most 1: In a balanced binary tree, the height of the left and right subtrees
of every node is similar. This ensures that the tree is balanced and that the height of the
tree is minimized.
 The in-order, pre-order, and post-order traversal of a binary tree are three
common ways to traverse the tree: In-order, pre-order, and post-order are three
different ways to traverse a binary tree. In-order traversal visits the left subtree, the
node itself, and then the right subtree. Pre-order traversal visits the node itself, the left
subtree, and then the right subtree. Post-order traversal visits the left subtree, the right
subtree, and then the node itself.

Types of Binary Tree:

1.Binary Tree consists of following types based on the number of children:

1. Full Binary Tree


A Binary Tree is a full binary tree if every node has 0 or 2 children. The following are examples of
a full binary tree. We can also say a full binary tree is a binary tree in which all nodes except leaf
nodes have two children.
A full Binary tree is a special type of binary tree in which every parent node/internal node has
either two or no children. It is also known as a proper binary tree.

2. Degenerate (or pathological) tree


A Tree where every internal node has one child. Such trees are performance-wise same as linked
list. A degenerate or pathological tree is a tree having a single child either left or right.

3. Skewed Binary Tree


A skewed binary tree is a pathological/degenerate tree in which the tree is either dominated by the
left nodes or the right nodes. Thus, there are two types of skewed binary tree: left-skewed binary
tree and right-skewed binary tree.

2.On the basis of completion of levels, the binary tree can be divided into following types:
1. Complete Binary Tree
2. Perfect Binary Tree
3. Balanced Binary Tree

1. Generic Trees (N-ary Tree)


2. Binary Tree
3. Ternary Tree
4. Binary Search Tree
5. Ternary Search Tree
6. AVL Tree
7. B tree and B+ tree

You might also like