0% found this document useful (0 votes)
13 views27 pages

Unit IV

A tree is a non-linear data structure that organizes data hierarchically, consisting of nodes connected by edges. Key terminology includes root, parent, child, leaf, and internal nodes, with various types of trees such as binary trees and binary search trees. Operations on trees include insertion, deletion, and traversal, and they are widely used for representing hierarchical relationships and efficient data management.

Uploaded by

divyapodapati2
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views27 pages

Unit IV

A tree is a non-linear data structure that organizes data hierarchically, consisting of nodes connected by edges. Key terminology includes root, parent, child, leaf, and internal nodes, with various types of trees such as binary trees and binary search trees. Operations on trees include insertion, deletion, and traversal, and they are widely used for representing hierarchical relationships and efficient data management.

Uploaded by

divyapodapati2
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 27

Tree – Terminology:

In linear data structure data is organized in sequential order and in non-linear data structure data is
organized in random order. A tree is a very popular non-linear data structure used in a wide range of
applications. A tree data structure can be defined as follows...

Tree is a non-linear data structure which organizes data in hierarchical


structure and this is a recursive definition.

Tree data structure is a collection of data (Node) which is organized in


hierarchical structure recursively..

In tree data structure, every individual element is called as Node. Node in a


tree data structure stores the actual data of that particular element and link to
next element in hierarchical structure.

In a tree data structure, if we have N number of nodes then we can have a


maximum of N-1 number of links.

Example:

Operations on tree:
1. Insertion
2. Deletion
3. Traversal
4. Searching.

Terminology
In a tree data structure, we use the following terminology...

1. Root
In a tree data structure, the first node is called as Root Node. Every tree must have a root node. We
can say that the root node is the origin of the tree data structure. In any tree, there must be only one
root node. We never have multiple root nodes in a tree.

2. Edge
In a tree data structure, the connecting link between any two nodes is called as EDGE. In a tree with
'N' number of nodes there will be a maximum of 'N-1' number of edges.
3. Parent
In a tree data structure, the node which is a predecessor of any node is called as PARENT NODE.
In simple words, the node which has a branch from it to any other node is called a parent node.
Parent node can also be defined as "The node which has child / children".

4. Child
In a tree data structure, the node which is descendant of any node is called as CHILD Node. In
simple words, the node which has a link from its parent node is called as child node. In a tree, any
parent node can have any number of child nodes. In a tree, all the nodes except root are child nodes
5. Siblings
In a tree data structure, nodes which belong to same Parent are called as SIBLINGS. In simple
words, the nodes with the same parent are called Sibling nodes.

6. Leaf
In a tree data structure, the node which does not have a child is called as
LEAF Node. In simple words, a leaf is a node with no child.
In a tree data structure, the leaf nodes are also called as External Nodes.
External node is also a node with no child. In a tree, leaf node is also called as
'Terminal' node.

7. Internal Nodes
In a tree data structure, the node which has atleast one child is called as
INTERNAL Node. In simple words, an internal node is a node with atleast
one child.

In a tree data structure, nodes other than leaf nodes are called as Internal
Nodes. The root node is also said to be Internal Node if the tree has more than
one node. Internal nodes are also called as 'Non-Terminal' nodes.

8. Degree
In a tree data structure, the total number of children of a node is called as
DEGREE of that Node. In simple words, the Degree of a node is total number
of children it has. The highest degree of a node among all the nodes in a tree is
called as 'Degree of Tree'.

9. Level
In a tree data structure, the root node is said to be at Level 0 and the children
of root node are at Level 1 and the children of the nodes which are at Level 1
will be at Level 2 and so on... In simple words, in a tree each step from top to
bottom is called as a Level and the Level count starts with '0' and incremented
by one at each level (Step).

10. Height
In a tree data structure, the total number of edges from leaf node to a particular node in the longest
path is called as HEIGHT of that Node. In a tree, height of the root node is said to be height of the
tree. In a tree, height of all leaf nodes is '0'.

11. Depth

In a tree data structure, the total number of edges from root node to a particular node is called
as DEPTH of that Node. In a tree, the total number of edges from root node to a leaf node in the
longest path is said to be Depth of the tree. In simple words, the highest depth of any leaf node in a
tree is said to be depth of that tree. In a tree, depth of the root node is '0'.

12. Path
In a tree data structure, the sequence of Nodes and Edges from one node to another node is called
as PATH between that two Nodes. Length of a Path is total number of nodes in that path. In below
example the path A - B - E - J has length 4.

13. Sub Tree


In a tree data structure, each child from a node forms a subtree recursively. Every child node will
form a subtree on its parent node.

Types of Tree data structures

The different types of tree data structures are as follows:


1. General tree
A general tree data structure has no restriction on the number of nodes. It
means that a parent node can have any number of child nodes.
2. Binary tree
A node of a binary tree can have a maximum of two child nodes. In the given
tree diagram, node B, D, and F are left children, while E, C, and G are the right
children.
3. Balanced tree
If the height of the left sub-tree and the right sub-tree is equal or differs at most
by 1, the tree is known as a balanced tree.

Balanced Tree Unbalanced Tree

4. Binary search tree


As the name implies, binary search trees are used for various searching and
sorting algorithms. The examples include AVL tree and red-black tree. It is a
non-linear data structure. It shows that the value of the left node is less than its
parent, while the value of the right node is greater than its parent.

Binary Tree Datastructure:

In a normal tree, every node can have any number of children. A binary
tree is a special type of tree data structure in which every node can have a
maximum of 2 children. One is known as a left child and the other is
known as right child.
A tree in which every node can have a maximum of two children is called
Binary Tree.
Everynode in the tree should have atmost 2 children.
In a binary tree, every node can have either 0 children or 1 child or 2
children but not more than 2 children.
Example:

A binary tree is a hierarchical data structure in which each node has at


most two children generally referred as left child and right child.

Each node contains three components:

Pointer to left subtree


Pointer to right subtree
Data element
The topmost node in the tree is called the root. An empty tree is
represented by NULL pointer.
Binary Tree Representations:
A binary tree data structure is represented using two methods. Those
methods are as follows...

Array Representation
Linked List Representation
Consider the following binary tree...

1. Array Representation of Binary Tree


In array representation of a binary tree, we use one-dimensional array (1-D
Array) to represent a binary tree.
Consider the above example of a binary tree and it is represented as
follows...

binary tree array representation


To represent a binary tree of depth 'n' using array representation, we need
one dimensional array with a maximum size of 2n + 1.

In a tree if a node is at i position, then its left child will be at 2i+1 and right
child will be at 2i+2 position.
2. Linked List Representation of Binary Tree
We use a double linked list to represent a binary tree. In a double linked list, every node consists of
three fields. First field for storing left child address, second for storing actual data and third for
storing right child address.
In this linked list representation, a node has the following structure...

The above example of the binary tree represented using Linked list representation is shown as
follows...

1. Strictly or full Binary Tree


In a binary tree, every node can have a maximum of two children. But in
strictly binary tree, every node should have exactly two children or none.
That means every internal node must have exactly two children. A strictly
Binary Tree can be defined as follows...

A binary tree in which every node has either two or zero number of
children is called Strictly Binary Tree

Strictly binary tree is also called as Full Binary Tree or Proper Binary Tree
or 2-Tree

Strictly binary tree data structure is used to represent mathematical


expressions.
2. Complete Binary Tree
In a binary tree, every node can have a maximum of two children. But in strictly binary tree, every
node should have exactly two children or none and in complete binary tree all the nodes must have
exactly two children and at every level of complete binary tree there must be 2 level number of nodes.
For example at level 2 there must be 22 = 4 nodes and at level 3 there must be 23 = 8 nodes.

A binary tree in which every internal node has exactly two children and all leaf nodes are at
same level is called Complete Binary Tree.

Complete binary tree is also called as Perfect Binary Tree

3.Skewed Binary Tree


 If a tree which is dominated by left child node or right child node, is said to be
a Skewed Binary Tree.
 In a skewed binary tree, all nodes except one have only one child node. The
remaining node has no child.

 In a left skewed tree, most of the nodes have the left child without
corresponding right child.
 In a right skewed tree, most of the nodes have the right child without
corresponding left child.

4. 4. Extended Binary Tree


 Extended binary tree consists of replacing every null subtree of the original tree
with special nodes.
 Empty circle represents internal node and filled circle represents external node.
 The nodes from the original tree are internal nodes and the special nodes are
external nodes.
 Every internal node in the extended binary tree has exactly two children and
every external node is a leaf. It displays the result which is a complete binary
tree.
5. incomplete binary tree:

Every node must have two children in all levels except in last level but filled
from left to right.

Advantages of Trees
Trees are so useful and frequently used, because they have some very serious
advantages:

Trees reflect structural relationships in the data.


Trees are used to represent hierarchies.
Trees provide an efficient insertion and searching.
Trees are very flexible data, allowing to move subtrees around with minumum
effort.

Binary Search Tree


In a binary tree, every node can have a maximum of two children but there is no need to maintain

the order of nodes basing on their values. In a binary tree, the elements are arranged in the order

they arrive at the tree from top to bottom and left to right.

A binary tree has the following time complexities...


1. Search Operation - O(n)

2. Insertion Operation - O(1)

3. Deletion Operation - O(n)

To enhance the performance of binary tree, we use a special type of binary tree known as Binary

Search Tree. Binary search tree mainly focuses on the search operation in a binary tree. Binary

search tree can be defined as follows...

Binary Search Tree is a binary tree in which every node contains only smaller values in its

left subtree and only larger values in its right subtree.

In a binary search tree, all the nodes in the left subtree of any node contains smaller values and all

the nodes in the right subtree of any node contains larger values as shown in the following figure...

Example
The following tree is a Binary Search Tree. In this tree, left subtree of every
node contains nodes with smaller values and right subtree of every node
contains larger values.
Every binary search tree is a binary tree but every binary tree need not to be
binary search tree.

Operations on a Binary Search Tree


The following operations are performed on a binary search tree...

1. Search
2. Insertion
3. Deletion

Search Operation in BST


In a binary search tree, the search operation is performed with O(log n) time complexity. The search
operation is performed as follows...

 Step 1 - Read the search element from the user.


 Step 2 - Compare the search element with the value of root node in the tree.
 Step 3 - If both are matched, then display "Given node is found!!!" and terminate the function
 Step 4 - If both are not matched, then check whether search element is smaller or larger
than that node value.
 Step 5 - If search element is smaller, then continue the search process in left subtree.
 Step 6- If search element is larger, then continue the search process in right subtree.
 Step 7 - Repeat the same until we find the exact element or until the search element is
compared with the leaf node
 Step 8 - If we reach to the node having the value equal to the search value then display
"Element is found" and terminate the function.
 Step 9 - If we reach to the leaf node and if it is also not matched with the search element,
then display "Element is not found" and terminate the function.
Insertion Operation in BST
In a binary search tree, the insertion operation is performed with O(log n) time complexity. In binary
search tree, new node is always inserted as a leaf node. The insertion operation is performed as
follows...

 Step 1 - Create a newNode with given value and set its left and right to NULL.
 Step 2 - Check whether tree is Empty.
 Step 3 - If the tree is Empty, then set root to newNode.
 Step 4 - If the tree is Not Empty, then check whether the value of newNode
is smaller or larger than the node (here it is root node).
 Step 5 - If newNode is smaller than or equal to the node then move to its left child. If
newNode is larger than the node then move to its right child.
 Step 6- Repeat the above steps until we reach to the leaf node (i.e., reaches to NULL).
 Step 7 - After reaching the leaf node, insert the newNode as left child if the newNode
is smaller or equal to that leaf node or else insert it as right child.

Deletion Operation in BST


In a binary search tree, the deletion operation is performed with O(log n) time complexity. Deleting a
node from Binary search tree includes following three cases...

 Case 1: Deleting a Leaf node (A node with no children)


 Case 2: Deleting a node with one child
 Case 3: Deleting a node with two children

Case 1: Deleting a leaf node


We use the following steps to delete a leaf node from BST...

 Step 1 - Find the node to be deleted using search operation


 Step 2 - Delete the node using free function (If it is a leaf) and terminate the function.

Case 2: Deleting a node with one child


We use the following steps to delete a node with one child from BST...

 Step 1 - Find the node to be deleted using search operation


 Step 2 - If it has only one child then create a link between its parent node and child node.
 Step 3 - Delete the node using free function and terminate the function.

Case 3: Deleting a node with two children


We use the following steps to delete a node with two children from BST...

 Step 1 - Find the node to be deleted using search operation


 Step 2 - If it has two children, then find the largest node in its left subtree (OR)
the smallest node in its right subtree.
 Step 3 - Swap both deleting node and node which is found in the above step.
 Step 4 - Then check whether deleting node came to case 1 or case 2 or else goto step 2
 Step 5 - If it comes to case 1, then delete using case 1 logic.
 Step 6- If it comes to case 2, then delete using case 2 logic.
 Step 7 - Repeat the same process until the node is deleted from the tree.

Example
Construct a Binary Search Tree by inserting the following sequence of
numbers...

10,12,5,4,20,8,7,15 and 13
Above elements are inserted into a Binary Search Tree as follows...
Heap Data Structure:

A Heap is a special type of tree that follows two properties. These properties
are :
All leaves must be at h or h-1 levels for some h > 0(complete binary tree
property).

The value of the node must be >= (or <=) the values of its children nodes,
known as the heap property.
Consider the pictorial representation shown below:

In the pictures shown above, the leftmost tree denotes a heap (Max Heap) and
the two tree to its right aren't heap as the middle tree violates the first heap
property(not a complete binary tree) and the last tree from the left violates the
second heap property(17 < 19).

Types of Heap
If we consider the properties of a heap, then we can have two types of heaps.
These mainly are:

Min Heap

Max Heap
Min Heap
In this heap, the value of a node must be less than or equal to the values of its
children nodes.

Consider the pictorial representation of a Min Heap below:


It can be clearly seen that the value of any node in the above heap is always
less than the value of its children nodes.

Max Heap
In this heap, the value of a node must be greater than or equal to the values of
its children nodes.

Consider the pictorial representation of a Max Heap below:


It can be clearly seen that the value of any node in the above heap is always
greater than the value of its children nodes.

Building a Heap
Let's look at some operations like inserting an element in a heap or deleting
an element from a heap.

1. Inserting an Element :

 First increase the heap size by 1.


 Then insert the new element at the available position(leftmost
position ? Last level).
 Heapify the element from the bottom to the top(bubble up).

Building a heap includes adding elements into the heap. Let us consider an
array of elements, namely nums = [10,5,17,4,22]. We want to make a Max
Heap out of these elements, and the way we do that is shown in the pictorial
representation below.
Whenever we add an element while building a heap, it is quite possible that it
will violate one of the properties. We take care of the first heap property by
simply filling each level with maximum nodes and then when we move on to
the next level, we fill the left child first and then the right child. But it is still
possible that we have a violation regarding the second heap property, in that
case we simply bubble up the current element that we have inserted and try to
find the right position of it in the heap. Bubbling up includes swapping the
current element with its parent till the heap is a max heap. In case of a min
heap, we do the same procedure while adding an element to the heap.

The above representation shows three violations in total(17, 22, 22) and in all
these cases we have basically swapped the current node with the parent node,
hence bubbling up. It can also be noted that this process of bubbling up is also
known as sift up.

Now let us look at another example, where we bubble down. Consider the
pictorial representation of a tree(not heap) shown below:
2. Deleting an Element :
Deleting an Element :
Copy the first element of the heap(root) into some variable

Place the last element of the heap in the root's position

Bubble Down to make it a valid heap

Whenever we are deleting an element, we simply delete the root element and
replace it with the last element of the heap(the rightmost child of last level).
We do that as we simply want to maintain the first property, as if we take any
other element out of the heap we won't have a valid complete binary tree. We
then place this node at the root, and it might be possible that this node will not
satisfy the second property of the heap, and hence we bubble down to make it
a valid heap. It can also be noted that this process of bubbling down is also
known as sift down.

Consider the pictorial representation shown below:

Applications of Binary Heaps


Binary heaps are used in a famous sorting algorithm known as Heap sort.

Binary heaps are also the main reason of implementing priority queues, as
because of them the several priority queue operations like add(), remove() etc
gets a time complexity of O(n).

They are also the most preferred choice for solving Kth smallest / Kth Largest
element questions.

Deleting an Element:
Deleting an element from a heap includes removing the root node and then
swapping it with the last node of the last level, and then if this new root node
violates any heap property, we need to swap it with the child node, until the
tree is a valid binary heap. Since, in worst case scenarios we might have to
swap this new root node with node at the lower levels to the very bottom(leaf
level), which in turn means the height of the tree, the time complexity of
deleting the node from the binary heap thus in turn is: O(log N).

You might also like