SlideShare a Scribd company logo
1 of 122
Unit 5
Tree data structure
•A tree data structure is defined as a collection of objects or entities known as nodes that are
linked together to represent or simulate hierarchy.
•A tree data structure is a non-linear data structure because it does not store in a sequential
manner. It is a hierarchical structure as elements in a Tree are arranged in multiple levels.
•In the Tree data structure, the topmost node is known as a root node. Each node contains
some data, and data can be of any type.
•Each node contains some data and the link or reference of other nodes that can be called
children.
In the above structure, each node is labeled with some number. Each arrow shown in the above
figure is known as a link between the two nodes.
•Root: The root node is the topmost node in the tree hierarchy. In other words, the root node is
the one that doesn't have any parent. In the above structure, node numbered 1 is the root
node of the tree. If a node is directly linked to some other node, it would be called a parent-
child relationship.
•Child node: If the node is a descendant of any node, then the node is known as a child node.
•Parent: If the node contains any sub-node, then that node is said to be the parent of that sub-
node.
•Sibling: The nodes that have the same parent are known as siblings.
•Leaf Node:- The node of the tree, which doesn't have any child node, is called a leaf node. A leaf
node is the bottom-most node of the tree. There can be any number of leaf nodes present in a
general tree. Leaf nodes can also be called external nodes.
•Internal nodes: A node has atleast one child node known as an internal
•Ancestor node:- An ancestor of a node is any predecessor node on a path from the root to that
node. The root node doesn't have any ancestors. In the tree shown in the above image, nodes 1,
2, and 5 are the ancestors of node 10.
•Descendant: The immediate successor of the given node is known as a descendant of a node. In
the above figure, 10 is the descendant of node 5.
Properties of Tree data structure
•Recursive data structure: The tree is also known as a recursive data structure. A tree can be
defined as recursively because the distinguished node in a tree data structure is known as a root
node. The root node of the tree contains a link to all the roots of its subtrees. The left subtree is
shown in the yellow color in the below figure, and the right subtree is shown in the red color. The
left subtree can be further split into subtrees shown in three different colors. Recursion means
reducing something in a self-similar manner. So, this recursive property of the tree data structure is
implemented in various applications.
•Number of edges: If there are n nodes, then there would n-1 edges. Each arrow in the structure
represents the link or path. Each node, except the root node, will have atleast one incoming link
known as an edge. There would be one link for the parent-child relationship.
•Depth of node x: The depth of node x can be defined as the length of the path from the root to the
node x. One edge contributes one-unit length in the path. So, the depth of node x can also be defined
as the number of edges between the root node and the node x. The root node has 0 depth.
•Height of node x: The height of node x can be defined as the longest path from the node x to the
leaf node.
The above figure shows the representation of the tree data structure in the memory. In the above
structure, the node contains three fields. The second field stores the data; the first field stores
the address of the left child, and the third field stores the address of the right child.
In programming, the structure of a node can be defined
as:
The above structure can only be defined for the binary trees because the binary tree can have
utmost two children, and generic trees can have more than two children. The structure of the node
for generic trees would be different as compared to the binary tree.
Applications of trees
The following are the applications of trees:
•Storing naturally hierarchical data: Trees are used to store the data in the hierarchical
structure. For example, the file system. The file system stored on the disc drive, the file and
folder are in the form of the naturally hierarchical data and stored in the form of trees.
•Organize data: It is used to organize data for efficient insertion, deletion and searching. For
example, a binary tree has a logN time for searching an element.
•Trie: It is a special kind of tree that is used to store the dictionary. It is a fast and efficient way for
dynamic spell checking.
•Heap: It is also a tree data structure implemented using arrays. It is used to implement priority
queues.
•B-Tree and B+Tree: B-Tree and B+Tree are the tree data structures used to implement
indexing in databases.
•Routing table: The tree data structure is also used to store the data in routing tables in the
routers.
Types of Tree data structure
The following are the types of a tree data structure:
•General tree: The general tree is one of the types of tree data structure. In the general tree, a
node can have either 0 or maximum n number of nodes. There is no restriction imposed on the
degree of the node (the number of nodes that a node can contain). The topmost node in a general
tree is known as a root node. The children of the parent node are known as subtrees.
There can be n number of subtrees in a general tree. In the general tree, the subtrees are unordered
as the nodes in the subtree cannot be ordered.
Every non-empty tree has a downward edge, and these edges are connected to the nodes known
as child nodes. The root node is labeled with level 0. The nodes that have the same parent are
known as siblings.
Binary tree: Here, binary name itself suggests two numbers, i.e., 0 and 1. In a binary tree, each
node in a tree can have utmost two child nodes. Here, utmost means whether the node has 0 nodes,
1 node or 2 nodes.
•Binary Search tree: Binary search tree is a non-linear data structure in which one node is
connected to n number of nodes. It is a node-based data structure. A node can be represented in
a binary search tree with three fields, i.e., data part, left-child, and right-child. A node can be
connected to the utmost two child nodes in a binary search tree, so the node contains two
pointers (left child and right child pointer).
Every node in the left subtree must contain a value less than the value of the root node, and the
value of each node in the right subtree must be bigger than the value of the root node.
•AVL tree
It is one of the types of the binary tree, or we can say that it is a variant of the binary search tree.
AVL tree satisfies the property of the binary tree as well as of the binary search tree. It is a self-
balancing binary search tree that was invented by Adelson Velsky Lindas. Here, self-balancing
means that balancing the heights of left subtree and right subtree. This balancing is measured in
terms of the balancing factor.
We can consider a tree as an AVL tree if the tree obeys the binary search tree as well as a
balancing factor. The balancing factor can be defined as the difference between the height of the
left subtree and the height of the right subtree. The balancing factor's value must be either 0, -
1, or 1; therefore, each node in the AVL tree should have the value of the balancing factor either as
0, -1, or 1.
Binary Tree
The Binary tree means that the node can have maximum two children. Here, binary name itself
suggests that 'two'; therefore, each node can have either 0, 1 or 2 children.
Let's understand the binary tree through an example.
In the above tree, node 1 contains two pointers, i.e., left and a right pointer pointing to the left and
right node respectively. The node 2 contains both the nodes (left and right node); therefore, it has
two pointers (left and right). The nodes 3, 5 and 6 are the leaf nodes, so all these nodes
contain NULL pointer on both left and right parts.
Types of Binary Tree
There are four types of Binary tree:
•Full/ proper/ strict Binary tree
•Complete Binary tree
•Perfect Binary tree
•Degenerate Binary tree
•Balanced Binary tree
1. Full/ proper/ strict Binary tree
The full binary tree is also known as a strict binary tree. The tree can only be considered as the
full binary tree if each node must contain either 0 or 2 children. The full binary tree can also be
defined as the tree in which each node must contain 2 children except the leaf nodes.
Complete Binary Tree
The complete binary tree is a tree in which all the nodes are completely filled except the last level. In the
last level, all the nodes must be as left as possible. In a complete binary tree, the nodes should be added
from the left.
Let's create a complete binary tree.
Perfect Binary Tree
A tree is a perfect binary tree if all the internal nodes have 2 children, and all the leaf nodes are
at the same level.
Note: All the perfect binary trees are the complete binary
trees as well as the full binary tree, but vice versa is not
true.
The above tree is a balanced binary tree
What is a Binary Search tree?
A binary search tree follows some order to arrange the elements. In a Binary search tree, the value of
left node must be smaller than the parent node, and the value of right node must be greater than the
parent node. This rule is applied recursively to the left and right subtrees of the root.
Let's understand the concept of Binary search tree with an example.
In the above figure, we can observe that the root node is 40, and all the nodes of the left subtree are
smaller than the root node, and all the nodes of the right subtree are greater than the root node.
Similarly, we can see the left child of root node is greater than its left child and smaller than its right
child. So, it also satisfies the property of binary search tree. Therefore, we can say that the tree in the
above image is a binary search tree.
Suppose if we change the value of node 35 to 55 in the above tree, check whether the tree will be
binary search tree or not.
In the above tree, the value of root node is 40, which is greater than its left child 30 but smaller
than right child of 30, i.e., 55. So, the above tree does not satisfy the property of Binary search
tree. Therefore, the above tree is not a binary search tree.
Advantages of Binary search tree
•Searching an element in the Binary search tree is easy as we always have a hint that which
subtree has the desired element.
•As compared to array and linked lists, insertion and deletion operations are faster in BST.
Example of creating a binary search tree
Now, let's see the creation of binary search tree using an example.
Suppose the data elements are - 45, 15, 79, 90, 10, 55, 12, 20, 50
•First, we have to insert 45 into the tree as the root of the tree.
•Then, read the next element; if it is smaller than the root node, insert it as the root of the left
subtree, and move to the next element.
•Otherwise, if the element is larger than the root node, then insert it as the root of the right
subtree.
Now, let's see the process of creating the Binary search tree using the given data element. The
process of creating the BST is shown below -
Step 1 - Insert 45.
Step 3 - Insert 79.
Step 4 - Insert 90.
90 is greater than 45 and 79, so it will be inserted as the right subtree of 79.
Step 9 - Insert 50.
Now, the creation of binary search tree is completed. After that, let's move towards the operations
that can be performed on Binary search tree.
We can perform insert, delete and search operations on the binary search tree.
Let's understand how a search is performed on a binary search tree.
Searching in Binary search tree
Searching means to find or locate a specific element or node in a data structure. In Binary search
tree, searching a node is easy because elements in BST are stored in a specific order. The steps
of searching a node in Binary Search tree are listed as follows -
1.First, compare the element to be searched with the root element of the tree.
2.If root is matched with the target element, then return the node's location.
3.If it is not matched, then check whether the item is less than the root element, if it is smaller than
the root element, then move to the left subtree.
4.If it is larger than the root element, then move to the right subtree.
5.Repeat the above procedure recursively until the match is found.
6.If the element is not found or not present in the tree, then return NULL.
Deletion in Binary Search tree
In a binary search tree, we must delete a node from the tree by keeping in mind that the property of
BST is not violated. To delete a node from BST, there are three possible situations occur -
•The node to be deleted is the leaf node, or,
•The node to be deleted has only one child, and,
•The node to be deleted has two children
Insertion in Binary Search tree
A new key in BST is always inserted at the leaf. To insert an element in BST, we have to start
searching from the root node; if the node to be inserted is less than the root node, then search
for an empty location in the left subtree. Else, search for the empty location in the right subtree
and insert the data. Insert in BST is similar to searching, as we always have to maintain the rule
that the left subtree is smaller than the root, and right subtree is larger than the root.
AVL Tree
AVL Tree is invented by GM Adelson - Velsky and EM Landis in 1962. The tree is named AVL in
honour of its inventors.
AVL Tree can be defined as height balanced binary search tree in which each node is associated
with a balance factor which is calculated by subtracting the height of its right sub-tree from that of
its left sub-tree.
Tree is said to be balanced if balance factor of each node is in between -1 to 1, otherwise, the
tree will be unbalanced and need to be balanced.
Balance Factor (k) = height (left(k)) - height (right(k))
If balance factor of any node is 1, it means that the left sub-tree is one level higher than the right
sub-tree.
If balance factor of any node is 0, it means that the left sub-tree and right sub-tree contain equal
height.
If balance factor of any node is -1, it means that the left sub-tree is one level lower than the right
sub-tree.
An AVL tree is given in the following figure. We can see that, balance factor associated with each
node is in between -1 and +1. therefore, it is an example of AVL tree.
Why AVL Tree?
AVL tree controls the height of the binary search tree by not letting it to be skewed. The time taken
for all operations in a binary search tree of height h is O(h). However, it can be extended to O(n) if
the BST becomes skewed (i.e. worst case). By limiting this height to log n, AVL tree imposes an
upper bound on each operation to be O(log n) where n is the number of nodes.
AVL Rotations
We perform rotation in AVL tree only in case if Balance Factor is other than -1, 0, and 1. There are
basically four types of rotations which are as follows:
1.L L rotation: Inserted node is in the left subtree of left subtree of A
2.R R rotation : Inserted node is in the right subtree of right subtree of A
3.L R rotation : Inserted node is in the right subtree of left subtree of A
4.R L rotation : Inserted node is in the left subtree of right subtree of A
Where node A is the node whose balance Factor is other than -1, 0, 1.
The first two rotations LL and RR are single rotations and the next two rotations LR and RL are
double rotations. For a tree to be unbalanced, minimum height must be at least 2, Let us
understand each rotation
Q: Construct an AVL tree having the following elements
H, I, J, B, A, E, C, F, D, G, K, L
3 a) We first perform RR rotation on node B
B Tree
B Tree is a specialized m-way tree that can be widely used for disk access. A B-Tree of order m can
have at most m-1 keys and m children. One of the main reason of using B tree is its capability to
store large number of keys in a single node and large key values by keeping the height of the tree
relatively small.
A B tree of order m contains all the properties of an M way tree. In addition, it contains the following
properties.
1.Every node in a B-Tree contains at most m children.
2.Every node in a B-Tree except the root node and the leaf node contain at least m/2 children.
3.The root nodes must have at least 2 nodes.
4.All leaf nodes must be at the same level.
It is not necessary that, all the nodes contain the same number of children but, each node must
have m/2 number of nodes.
The m-way search trees are multi-way trees which are generalised versions of binary trees where
each node contains multiple elements. In an m-Way tree of order m, each node contains a
maximum of m – 1 elements and m children.
A B tree of order 4 is shown in the following image.
Operations
Searching :
Searching in B Trees is similar to that in Binary search tree. For example, if we search for an item
49 in the following B Tree. The process will something like following :
1.Compare item 49 with root node 78. since 49 < 78 hence, move to its left sub-tree.
2.Since, 40<49<56, traverse right sub-tree of 40.
3.49>45, move to right. Compare 49.
4.match found, return.
Inserting
Insertions are done at the leaf node level. The following algorithm needs to be followed in order to
insert an item into B Tree.
1.Traverse the B Tree in order to find the appropriate leaf node at which the node can be inserted.
2.If the leaf node contain less than m-1 keys then insert the element in the increasing order.
3.Else, if the leaf node contains m-1 keys, then follow the following steps.
• Insert the new element in the increasing order of elements.
• Split the node into the two nodes at the median.
• Push the median element upto its parent node.
• If the parent node also contain m-1 number of keys, then split it too by following the same
steps.
Deletion
Deletion is also performed at the leaf nodes. The node which is to be deleted can either be a
leaf node or an internal node. Following algorithm needs to be followed in order to delete a node
from a B tree.
1.Locate the leaf node.
2.If there are more than m/2 keys in the leaf node then delete the desired key from the node.
3.If the leaf node doesn't contain m/2 keys then complete the keys by taking the element from
right or left sibling.
• If the left sibling contains more than m/2 elements then push its largest element up to its
parent and move the intervening element down to the node where the key is deleted.
• If the right sibling contains more than m/2 elements then push its smallest element up to
the parent and move intervening element down to the node where the key is deleted.
4. If neither of the sibling contain more than m/2 elements then create a new leaf node by joining
two leaf nodes and the intervening element of the parent node.
5. If parent is left with less than m/2 nodes then, apply the above process on the parent too.
If the node which is to be deleted is an internal node, then replace the node with its in-order
successor or predecessor. Since, successor or predecessor will always be on the leaf node hence,
the process will be similar as the node is being deleted from the leaf node.
Example 1
Delete the node 53 from the B Tree of order 5 shown in the following figure.
The final B tree is shown as follows.
Extended Binary Tree
Extended binary tree is a type of binary tree in which all the null sub tree of the original tree are
replaced with special nodes called external nodes whereas other nodes are called internal nodes
Here the circles represent the internal nodes and the boxes represent the external nodes.
Properties of External binary tree
1.The nodes from the original tree are internal nodes and the special nodes are external nodes.
2.All external nodes are leaf nodes and the internal nodes are non-leaf nodes.
3.Every internal node has exactly two children and every external node is a leaf. It displays the
result which is a complete binary tree
Threaded Binary Tree
In the linked representation of binary trees, more than one half of the link fields contain NULL
values which results in wastage of storage space. If a binary tree consists of n nodes
then n+1 link fields contain NULL values. So in order to effectively manage the space, the NULL
links are replaced with special links known as threads. Such binary trees with threads are known
as threaded binary trees. Each node in a threaded binary tree either contains a link to its child
node or thread to other nodes in the tree.
Types of Threaded Binary Tree
There are two types of threaded Binary Tree:
In one-way threaded binary trees, a thread will appear either in the right or left link field of a node.
If it appears in the right link field of a node then it will point to the next node that will appear on
performing in order traversal. Such trees are called Right threaded binary trees. If thread
appears in the left field of a node then it will point to the nodes inorder predecessor. Such trees
are called Left threaded binary trees.
In one-way threaded binary trees, the right link field of last node and left link field of first node
contains a NULL. In order to distinguish threads from normal links they are represented by dotted
lines.
The above figure shows the inorder traversal of this binary tree yields D, B, E, A, C, F. When this
tree is represented as a right threaded binary tree, the right link field of leaf node D which
contains a NULL value is replaced with a thread that points to node B which is the inorder
successor of a node D. In the same way other nodes containing values in the right link field will
contain NULL value.
The above figure shows the inorder traversal of this binary tree yields D, B, E, G, A, C, F. If we
consider the two-way threaded Binary tree, the node E whose left field contains NULL is replaced
by a thread pointing to its inorder predecessor i.e. node B. Similarly, for node G whose right and
left linked fields contain NULL values are replaced by threads such that right link field points to its
inorder successor and left link field points to its inorder predecessor. In the same way, other nodes
containing NULL values in their link fields are filled with threads.
In the above figure of two-way threaded Binary tree, we noticed that no left thread is possible
for the first node and no right thread is possible for the last node. This is because they don't
have any inorder predecessor and successor respectively. This is indicated by threads pointing
nowhere. So in order to maintain the uniformity of threads, we maintain a special node called
the header node. The header node does not contain any data part and its left link field points
to the root node and its right link field points to itself. If this header node is included in the two-
way threaded Binary tree then this node becomes the inorder predecessor of the first node and
inorder successor of the last node. Now threads of left link fields of the first node and right link
fields of the last node will point to the header node.
Advantages of Threaded Binary Tree:
•In threaded binary tree, linear and fast traversal of nodes in the tree so there is no requirement
of stack. If the stack is used then it consumes a lot of memory and time.
•It is more general as one can efficiently determine the successor and predecessor of any node
by simply following the thread and links. It almost behaves like a circular linked list.
Disadvantages of Threaded Binary Tree:
•When implemented, the threaded binary tree needs to maintain the extra information for each
node to indicate whether the link field of each node points to an ordinary node or the node's
successor and predecessor.
•Insertion into and deletion from a threaded binary tree are more time consuming since both
threads and ordinary links need to be maintained.
Huffman coding using Binary Tree :
Huffman coding provides codes to characters such that the length of the code depends on the
relative frequency or weight of the corresponding character. Huffman codes are of variable-length,
and without any prefix (that means no code is a prefix of any other). Any prefix-free binary code
can be displayed or visualized as a binary tree with the encoded characters stored at the leaves.
Huffman tree or Huffman coding tree defines as a full binary tree in which each leaf of the tree
corresponds to a letter in the given alphabet.
The Huffman tree is treated as the binary tree associated with minimum external path weight that
means, the one associated with the minimum sum of weighted path lengths for the given set of
leaves. So the goal is to construct a tree with the minimum external path weight.
Steps to build Huffman Tree
Input is an array of unique characters along with their frequency of occurrences and output is Huffman
Tree.
1.Create a leaf node for each unique character and build a min heap of all leaf nodes (Min Heap is
used as a priority queue. The value of frequency field is used to compare two nodes in min heap.
Initially, the least frequent character is at root)
2.Extract two nodes with the minimum frequency from the min heap.
3.Create a new internal node with a frequency equal to the sum of the two nodes frequencies. Make
the first extracted node as its left child and the other extracted node as its right child. Add this node to
the min heap.
4.Repeat steps#2 and #3 until the heap contains only one node. The remaining node is the root node
and the tree is complete.
Binary Heap
A Binary Heap is a Binary Tree with following properties.
1) It’s a complete tree (All levels are completely filled except possibly the last level and the last level
has all keys as left as possible). This property of Binary Heap makes them suitable to be stored in
an array.
2) A Binary Heap is either Min Heap or Max Heap. In a Min Binary Heap, the key at root must be
minimum among all keys present in Binary Heap. The same property must be recursively true for all
nodes in Binary Tree. In Max Binary Heap , the key at root must be maximum among all keys
present in Binary Heap.
How is Binary Heap represented?
A Binary Heap is a Complete Binary Tree. A binary heap is typically represented as an array.
Applications of Heaps:
1) Heap Sort: Heap Sort uses Binary Heap to sort an array in O(n Log n) time.
2) Priority Queue: Priority queues can be efficiently implemented using Binary Heap because it
supports insert(), delete() and extractmax(), decreaseKey() operations in O(log n) time.
3) Graph Algorithms: The priority queues are especially used in Graph Algorithms like Dijkstra’s
Shortest Path and Prim’s Minimum Spanning Tree.
Operations on Min Heap:
1) getMini(): It returns the root element of Min Heap. Time Complexity of this operation is O(1).
2) extractMin(): Removes the minimum element from MinHeap. Time Complexity of this
Operation is O(Log n) as this operation needs to maintain the heap property (by calling heapify())
after removing root.
3) decreaseKey(): Decreases value of key. The time complexity of this operation is O(Log n). If
the decrease key value of a node is greater than the parent of the node, then we don’t need to
do anything. Otherwise, we need to traverse up to fix the violated heap property.
4) insert(): Inserting a new key takes O(Log n) time. We add a new key at the end of the tree. If
new key is greater than its parent, then we don’t need to do anything. Otherwise, we need to
traverse up to fix the violated heap property.
5) delete(): Deleting a key also takes O(Log n) time. We replace the key to be deleted with
minimum infinite by calling decreaseKey(). After decreaseKey(), the minus infinite value must
reach root, so we call extractMin() to remove the key.
Tree Traversal Algorithms
Traversal is a process to visit all the nodes of a tree and may print their values too. Because, all
nodes are connected via edges (links) we always start from the root (head) node. That is, we cannot
randomly access a node in a tree. There are three ways which we use to traverse a tree −
•In-order Traversal
•Pre-order Traversal
•Post-order Traversal
Generally, we traverse a tree to search or locate a given item or key in the tree or to print all the
values it contains.
Unit 5 Tree.pptx
Unit 5 Tree.pptx
Unit 5 Tree.pptx
Unit 5 Tree.pptx
Unit 5 Tree.pptx
Unit 5 Tree.pptx
Unit 5 Tree.pptx
Unit 5 Tree.pptx
Unit 5 Tree.pptx

More Related Content

Similar to Unit 5 Tree.pptx

Module - 5_Trees.pdf
Module - 5_Trees.pdfModule - 5_Trees.pdf
Module - 5_Trees.pdfAnuradhaJadiya1
 
NON-LINEAR DATA STRUCTURE-TREES.pptx
NON-LINEAR DATA STRUCTURE-TREES.pptxNON-LINEAR DATA STRUCTURE-TREES.pptx
NON-LINEAR DATA STRUCTURE-TREES.pptxRajitha Reddy Alugati
 
Lecture 5 tree.pptx
Lecture 5 tree.pptxLecture 5 tree.pptx
Lecture 5 tree.pptxAbirami A
 
Lecture 5 trees
Lecture 5 treesLecture 5 trees
Lecture 5 treesVictor Palmar
 
Search tree,Tree and binary tree and heap tree
Search tree,Tree  and binary tree and heap treeSearch tree,Tree  and binary tree and heap tree
Search tree,Tree and binary tree and heap treezia eagle
 
Data Structures 4
Data Structures 4Data Structures 4
Data Structures 4Dr.Umadevi V
 
Tree Introduction.pptx
Tree Introduction.pptxTree Introduction.pptx
Tree Introduction.pptxRahulAI
 
Lecture 21_Trees - I.pptx
Lecture 21_Trees - I.pptxLecture 21_Trees - I.pptx
Lecture 21_Trees - I.pptxfizzaahmed9
 
Binary tree
Binary treeBinary tree
Binary treeRajendran
 
Data structure(Part 2)
Data structure(Part 2)Data structure(Part 2)
Data structure(Part 2)SURBHI SAROHA
 
Farhana shaikh webinar_treesindiscretestructure
Farhana shaikh webinar_treesindiscretestructureFarhana shaikh webinar_treesindiscretestructure
Farhana shaikh webinar_treesindiscretestructureFarhana Shaikh
 
Trees and Graphs in data structures and Algorithms
Trees and Graphs in data structures and AlgorithmsTrees and Graphs in data structures and Algorithms
Trees and Graphs in data structures and AlgorithmsBHARATH KUMAR
 
trees in data structure
trees in data structure trees in data structure
trees in data structure shameen khan
 

Similar to Unit 5 Tree.pptx (20)

Module - 5_Trees.pdf
Module - 5_Trees.pdfModule - 5_Trees.pdf
Module - 5_Trees.pdf
 
NON-LINEAR DATA STRUCTURE-TREES.pptx
NON-LINEAR DATA STRUCTURE-TREES.pptxNON-LINEAR DATA STRUCTURE-TREES.pptx
NON-LINEAR DATA STRUCTURE-TREES.pptx
 
Tree
TreeTree
Tree
 
Lecture 5 tree.pptx
Lecture 5 tree.pptxLecture 5 tree.pptx
Lecture 5 tree.pptx
 
Lecture 5 trees
Lecture 5 treesLecture 5 trees
Lecture 5 trees
 
Search tree,Tree and binary tree and heap tree
Search tree,Tree  and binary tree and heap treeSearch tree,Tree  and binary tree and heap tree
Search tree,Tree and binary tree and heap tree
 
Data Structures 4
Data Structures 4Data Structures 4
Data Structures 4
 
Data structures 3
Data structures 3Data structures 3
Data structures 3
 
Tree
TreeTree
Tree
 
Tree Introduction.pptx
Tree Introduction.pptxTree Introduction.pptx
Tree Introduction.pptx
 
Lecture 21_Trees - I.pptx
Lecture 21_Trees - I.pptxLecture 21_Trees - I.pptx
Lecture 21_Trees - I.pptx
 
Binary tree
Binary treeBinary tree
Binary tree
 
Data structure(Part 2)
Data structure(Part 2)Data structure(Part 2)
Data structure(Part 2)
 
Farhana shaikh webinar_treesindiscretestructure
Farhana shaikh webinar_treesindiscretestructureFarhana shaikh webinar_treesindiscretestructure
Farhana shaikh webinar_treesindiscretestructure
 
Trees and Graphs in data structures and Algorithms
Trees and Graphs in data structures and AlgorithmsTrees and Graphs in data structures and Algorithms
Trees and Graphs in data structures and Algorithms
 
Tree
TreeTree
Tree
 
Unit 3,4.docx
Unit 3,4.docxUnit 3,4.docx
Unit 3,4.docx
 
trees in data structure
trees in data structure trees in data structure
trees in data structure
 
Binary tree
Binary  treeBinary  tree
Binary tree
 
Dsc++ unit 3 notes
Dsc++ unit 3 notesDsc++ unit 3 notes
Dsc++ unit 3 notes
 

Recently uploaded

Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...VICTOR MAESTRE RAMIREZ
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024Mark Billinghurst
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidNikhilNagaraju
 
Study on Air-Water & Water-Water Heat Exchange in a Finned ďťżTube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned ďťżTube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned ďťżTube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned ďťżTube ExchangerAnamika Sarkar
 
power system scada applications and uses
power system scada applications and usespower system scada applications and uses
power system scada applications and usesDevarapalliHaritha
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfme23b1001
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSKurinjimalarL3
 
Concrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxConcrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxKartikeyaDwivedi3
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )Tsuyoshi Horigome
 
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionDr.Costas Sachpazis
 
Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx959SahilShah
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxbritheesh05
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxpurnimasatapathy1234
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...asadnawaz62
 

Recently uploaded (20)

Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...
 
IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024IVE Industry Focused Event - Defence Sector 2024
IVE Industry Focused Event - Defence Sector 2024
 
POWER SYSTEMS-1 Complete notes examples
POWER SYSTEMS-1 Complete notes  examplesPOWER SYSTEMS-1 Complete notes  examples
POWER SYSTEMS-1 Complete notes examples
 
main PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfidmain PPT.pptx of girls hostel security using rfid
main PPT.pptx of girls hostel security using rfid
 
Study on Air-Water & Water-Water Heat Exchange in a Finned ďťżTube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned ďťżTube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned ďťżTube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned ďťżTube Exchanger
 
power system scada applications and uses
power system scada applications and usespower system scada applications and uses
power system scada applications and uses
 
Electronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdfElectronically Controlled suspensions system .pdf
Electronically Controlled suspensions system .pdf
 
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICSAPPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
APPLICATIONS-AC/DC DRIVES-OPERATING CHARACTERISTICS
 
Concrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptxConcrete Mix Design - IS 10262-2019 - .pptx
Concrete Mix Design - IS 10262-2019 - .pptx
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )SPICE PARK APR2024 ( 6,793 SPICE Models )
SPICE PARK APR2024 ( 6,793 SPICE Models )
 
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
 
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective IntroductionSachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
Sachpazis Costas: Geotechnical Engineering: A student's Perspective Introduction
 
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
9953056974 Call Girls In South Ex, Escorts (Delhi) NCR.pdf
 
Application of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptxApplication of Residue Theorem to evaluate real integrations.pptx
Application of Residue Theorem to evaluate real integrations.pptx
 
Artificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptxArtificial-Intelligence-in-Electronics (K).pptx
Artificial-Intelligence-in-Electronics (K).pptx
 
Microscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptxMicroscopic Analysis of Ceramic Materials.pptx
Microscopic Analysis of Ceramic Materials.pptx
 
complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...complete construction, environmental and economics information of biomass com...
complete construction, environmental and economics information of biomass com...
 
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Serviceyoung call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
young call girls in Rajiv Chowk🔝 9953056974 🔝 Delhi escort Service
 
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCRCall Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
Call Us -/9953056974- Call Girls In Vikaspuri-/- Delhi NCR
 

Unit 5 Tree.pptx

  • 2. Tree data structure •A tree data structure is defined as a collection of objects or entities known as nodes that are linked together to represent or simulate hierarchy. •A tree data structure is a non-linear data structure because it does not store in a sequential manner. It is a hierarchical structure as elements in a Tree are arranged in multiple levels. •In the Tree data structure, the topmost node is known as a root node. Each node contains some data, and data can be of any type. •Each node contains some data and the link or reference of other nodes that can be called children.
  • 3.
  • 4. In the above structure, each node is labeled with some number. Each arrow shown in the above figure is known as a link between the two nodes. •Root: The root node is the topmost node in the tree hierarchy. In other words, the root node is the one that doesn't have any parent. In the above structure, node numbered 1 is the root node of the tree. If a node is directly linked to some other node, it would be called a parent- child relationship. •Child node: If the node is a descendant of any node, then the node is known as a child node. •Parent: If the node contains any sub-node, then that node is said to be the parent of that sub- node. •Sibling: The nodes that have the same parent are known as siblings.
  • 5. •Leaf Node:- The node of the tree, which doesn't have any child node, is called a leaf node. A leaf node is the bottom-most node of the tree. There can be any number of leaf nodes present in a general tree. Leaf nodes can also be called external nodes. •Internal nodes: A node has atleast one child node known as an internal •Ancestor node:- An ancestor of a node is any predecessor node on a path from the root to that node. The root node doesn't have any ancestors. In the tree shown in the above image, nodes 1, 2, and 5 are the ancestors of node 10. •Descendant: The immediate successor of the given node is known as a descendant of a node. In the above figure, 10 is the descendant of node 5.
  • 6. Properties of Tree data structure •Recursive data structure: The tree is also known as a recursive data structure. A tree can be defined as recursively because the distinguished node in a tree data structure is known as a root node. The root node of the tree contains a link to all the roots of its subtrees. The left subtree is shown in the yellow color in the below figure, and the right subtree is shown in the red color. The left subtree can be further split into subtrees shown in three different colors. Recursion means reducing something in a self-similar manner. So, this recursive property of the tree data structure is implemented in various applications.
  • 7. •Number of edges: If there are n nodes, then there would n-1 edges. Each arrow in the structure represents the link or path. Each node, except the root node, will have atleast one incoming link known as an edge. There would be one link for the parent-child relationship. •Depth of node x: The depth of node x can be defined as the length of the path from the root to the node x. One edge contributes one-unit length in the path. So, the depth of node x can also be defined as the number of edges between the root node and the node x. The root node has 0 depth. •Height of node x: The height of node x can be defined as the longest path from the node x to the leaf node.
  • 8. The above figure shows the representation of the tree data structure in the memory. In the above structure, the node contains three fields. The second field stores the data; the first field stores the address of the left child, and the third field stores the address of the right child.
  • 9. In programming, the structure of a node can be defined as: The above structure can only be defined for the binary trees because the binary tree can have utmost two children, and generic trees can have more than two children. The structure of the node for generic trees would be different as compared to the binary tree.
  • 10. Applications of trees The following are the applications of trees: •Storing naturally hierarchical data: Trees are used to store the data in the hierarchical structure. For example, the file system. The file system stored on the disc drive, the file and folder are in the form of the naturally hierarchical data and stored in the form of trees. •Organize data: It is used to organize data for efficient insertion, deletion and searching. For example, a binary tree has a logN time for searching an element. •Trie: It is a special kind of tree that is used to store the dictionary. It is a fast and efficient way for dynamic spell checking. •Heap: It is also a tree data structure implemented using arrays. It is used to implement priority queues. •B-Tree and B+Tree: B-Tree and B+Tree are the tree data structures used to implement indexing in databases. •Routing table: The tree data structure is also used to store the data in routing tables in the routers.
  • 11. Types of Tree data structure The following are the types of a tree data structure: •General tree: The general tree is one of the types of tree data structure. In the general tree, a node can have either 0 or maximum n number of nodes. There is no restriction imposed on the degree of the node (the number of nodes that a node can contain). The topmost node in a general tree is known as a root node. The children of the parent node are known as subtrees. There can be n number of subtrees in a general tree. In the general tree, the subtrees are unordered as the nodes in the subtree cannot be ordered. Every non-empty tree has a downward edge, and these edges are connected to the nodes known as child nodes. The root node is labeled with level 0. The nodes that have the same parent are known as siblings.
  • 12. Binary tree: Here, binary name itself suggests two numbers, i.e., 0 and 1. In a binary tree, each node in a tree can have utmost two child nodes. Here, utmost means whether the node has 0 nodes, 1 node or 2 nodes.
  • 13. •Binary Search tree: Binary search tree is a non-linear data structure in which one node is connected to n number of nodes. It is a node-based data structure. A node can be represented in a binary search tree with three fields, i.e., data part, left-child, and right-child. A node can be connected to the utmost two child nodes in a binary search tree, so the node contains two pointers (left child and right child pointer). Every node in the left subtree must contain a value less than the value of the root node, and the value of each node in the right subtree must be bigger than the value of the root node.
  • 14. •AVL tree It is one of the types of the binary tree, or we can say that it is a variant of the binary search tree. AVL tree satisfies the property of the binary tree as well as of the binary search tree. It is a self- balancing binary search tree that was invented by Adelson Velsky Lindas. Here, self-balancing means that balancing the heights of left subtree and right subtree. This balancing is measured in terms of the balancing factor. We can consider a tree as an AVL tree if the tree obeys the binary search tree as well as a balancing factor. The balancing factor can be defined as the difference between the height of the left subtree and the height of the right subtree. The balancing factor's value must be either 0, - 1, or 1; therefore, each node in the AVL tree should have the value of the balancing factor either as 0, -1, or 1.
  • 15. Binary Tree The Binary tree means that the node can have maximum two children. Here, binary name itself suggests that 'two'; therefore, each node can have either 0, 1 or 2 children. Let's understand the binary tree through an example.
  • 16.
  • 17. In the above tree, node 1 contains two pointers, i.e., left and a right pointer pointing to the left and right node respectively. The node 2 contains both the nodes (left and right node); therefore, it has two pointers (left and right). The nodes 3, 5 and 6 are the leaf nodes, so all these nodes contain NULL pointer on both left and right parts.
  • 18. Types of Binary Tree There are four types of Binary tree: •Full/ proper/ strict Binary tree •Complete Binary tree •Perfect Binary tree •Degenerate Binary tree •Balanced Binary tree 1. Full/ proper/ strict Binary tree The full binary tree is also known as a strict binary tree. The tree can only be considered as the full binary tree if each node must contain either 0 or 2 children. The full binary tree can also be defined as the tree in which each node must contain 2 children except the leaf nodes.
  • 19.
  • 20. Complete Binary Tree The complete binary tree is a tree in which all the nodes are completely filled except the last level. In the last level, all the nodes must be as left as possible. In a complete binary tree, the nodes should be added from the left. Let's create a complete binary tree.
  • 21. Perfect Binary Tree A tree is a perfect binary tree if all the internal nodes have 2 children, and all the leaf nodes are at the same level.
  • 22. Note: All the perfect binary trees are the complete binary trees as well as the full binary tree, but vice versa is not true.
  • 23.
  • 24.
  • 25. The above tree is a balanced binary tree
  • 26.
  • 27. What is a Binary Search tree? A binary search tree follows some order to arrange the elements. In a Binary search tree, the value of left node must be smaller than the parent node, and the value of right node must be greater than the parent node. This rule is applied recursively to the left and right subtrees of the root. Let's understand the concept of Binary search tree with an example.
  • 28. In the above figure, we can observe that the root node is 40, and all the nodes of the left subtree are smaller than the root node, and all the nodes of the right subtree are greater than the root node. Similarly, we can see the left child of root node is greater than its left child and smaller than its right child. So, it also satisfies the property of binary search tree. Therefore, we can say that the tree in the above image is a binary search tree.
  • 29. Suppose if we change the value of node 35 to 55 in the above tree, check whether the tree will be binary search tree or not. In the above tree, the value of root node is 40, which is greater than its left child 30 but smaller than right child of 30, i.e., 55. So, the above tree does not satisfy the property of Binary search tree. Therefore, the above tree is not a binary search tree.
  • 30. Advantages of Binary search tree •Searching an element in the Binary search tree is easy as we always have a hint that which subtree has the desired element. •As compared to array and linked lists, insertion and deletion operations are faster in BST.
  • 31. Example of creating a binary search tree Now, let's see the creation of binary search tree using an example. Suppose the data elements are - 45, 15, 79, 90, 10, 55, 12, 20, 50 •First, we have to insert 45 into the tree as the root of the tree. •Then, read the next element; if it is smaller than the root node, insert it as the root of the left subtree, and move to the next element. •Otherwise, if the element is larger than the root node, then insert it as the root of the right subtree. Now, let's see the process of creating the Binary search tree using the given data element. The process of creating the BST is shown below - Step 1 - Insert 45.
  • 32.
  • 33. Step 3 - Insert 79.
  • 34. Step 4 - Insert 90. 90 is greater than 45 and 79, so it will be inserted as the right subtree of 79.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39. Step 9 - Insert 50.
  • 40. Now, the creation of binary search tree is completed. After that, let's move towards the operations that can be performed on Binary search tree. We can perform insert, delete and search operations on the binary search tree. Let's understand how a search is performed on a binary search tree.
  • 41. Searching in Binary search tree Searching means to find or locate a specific element or node in a data structure. In Binary search tree, searching a node is easy because elements in BST are stored in a specific order. The steps of searching a node in Binary Search tree are listed as follows - 1.First, compare the element to be searched with the root element of the tree. 2.If root is matched with the target element, then return the node's location. 3.If it is not matched, then check whether the item is less than the root element, if it is smaller than the root element, then move to the left subtree. 4.If it is larger than the root element, then move to the right subtree. 5.Repeat the above procedure recursively until the match is found. 6.If the element is not found or not present in the tree, then return NULL.
  • 42.
  • 43.
  • 44.
  • 45. Deletion in Binary Search tree In a binary search tree, we must delete a node from the tree by keeping in mind that the property of BST is not violated. To delete a node from BST, there are three possible situations occur - •The node to be deleted is the leaf node, or, •The node to be deleted has only one child, and, •The node to be deleted has two children
  • 46.
  • 47.
  • 48.
  • 49. Insertion in Binary Search tree A new key in BST is always inserted at the leaf. To insert an element in BST, we have to start searching from the root node; if the node to be inserted is less than the root node, then search for an empty location in the left subtree. Else, search for the empty location in the right subtree and insert the data. Insert in BST is similar to searching, as we always have to maintain the rule that the left subtree is smaller than the root, and right subtree is larger than the root.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54. AVL Tree AVL Tree is invented by GM Adelson - Velsky and EM Landis in 1962. The tree is named AVL in honour of its inventors. AVL Tree can be defined as height balanced binary search tree in which each node is associated with a balance factor which is calculated by subtracting the height of its right sub-tree from that of its left sub-tree. Tree is said to be balanced if balance factor of each node is in between -1 to 1, otherwise, the tree will be unbalanced and need to be balanced. Balance Factor (k) = height (left(k)) - height (right(k)) If balance factor of any node is 1, it means that the left sub-tree is one level higher than the right sub-tree.
  • 55. If balance factor of any node is 0, it means that the left sub-tree and right sub-tree contain equal height. If balance factor of any node is -1, it means that the left sub-tree is one level lower than the right sub-tree. An AVL tree is given in the following figure. We can see that, balance factor associated with each node is in between -1 and +1. therefore, it is an example of AVL tree.
  • 56.
  • 57.
  • 58.
  • 59. Why AVL Tree? AVL tree controls the height of the binary search tree by not letting it to be skewed. The time taken for all operations in a binary search tree of height h is O(h). However, it can be extended to O(n) if the BST becomes skewed (i.e. worst case). By limiting this height to log n, AVL tree imposes an upper bound on each operation to be O(log n) where n is the number of nodes. AVL Rotations We perform rotation in AVL tree only in case if Balance Factor is other than -1, 0, and 1. There are basically four types of rotations which are as follows: 1.L L rotation: Inserted node is in the left subtree of left subtree of A 2.R R rotation : Inserted node is in the right subtree of right subtree of A 3.L R rotation : Inserted node is in the right subtree of left subtree of A 4.R L rotation : Inserted node is in the left subtree of right subtree of A Where node A is the node whose balance Factor is other than -1, 0, 1. The first two rotations LL and RR are single rotations and the next two rotations LR and RL are double rotations. For a tree to be unbalanced, minimum height must be at least 2, Let us understand each rotation
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67. Q: Construct an AVL tree having the following elements H, I, J, B, A, E, C, F, D, G, K, L
  • 68.
  • 69.
  • 70. 3 a) We first perform RR rotation on node B
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77. B Tree B Tree is a specialized m-way tree that can be widely used for disk access. A B-Tree of order m can have at most m-1 keys and m children. One of the main reason of using B tree is its capability to store large number of keys in a single node and large key values by keeping the height of the tree relatively small. A B tree of order m contains all the properties of an M way tree. In addition, it contains the following properties. 1.Every node in a B-Tree contains at most m children. 2.Every node in a B-Tree except the root node and the leaf node contain at least m/2 children. 3.The root nodes must have at least 2 nodes. 4.All leaf nodes must be at the same level. It is not necessary that, all the nodes contain the same number of children but, each node must have m/2 number of nodes. The m-way search trees are multi-way trees which are generalised versions of binary trees where each node contains multiple elements. In an m-Way tree of order m, each node contains a maximum of m – 1 elements and m children.
  • 78. A B tree of order 4 is shown in the following image.
  • 79. Operations Searching : Searching in B Trees is similar to that in Binary search tree. For example, if we search for an item 49 in the following B Tree. The process will something like following : 1.Compare item 49 with root node 78. since 49 < 78 hence, move to its left sub-tree. 2.Since, 40<49<56, traverse right sub-tree of 40. 3.49>45, move to right. Compare 49. 4.match found, return.
  • 80.
  • 81. Inserting Insertions are done at the leaf node level. The following algorithm needs to be followed in order to insert an item into B Tree. 1.Traverse the B Tree in order to find the appropriate leaf node at which the node can be inserted. 2.If the leaf node contain less than m-1 keys then insert the element in the increasing order. 3.Else, if the leaf node contains m-1 keys, then follow the following steps. • Insert the new element in the increasing order of elements. • Split the node into the two nodes at the median. • Push the median element upto its parent node. • If the parent node also contain m-1 number of keys, then split it too by following the same steps.
  • 82.
  • 83.
  • 84. Deletion Deletion is also performed at the leaf nodes. The node which is to be deleted can either be a leaf node or an internal node. Following algorithm needs to be followed in order to delete a node from a B tree. 1.Locate the leaf node. 2.If there are more than m/2 keys in the leaf node then delete the desired key from the node. 3.If the leaf node doesn't contain m/2 keys then complete the keys by taking the element from right or left sibling. • If the left sibling contains more than m/2 elements then push its largest element up to its parent and move the intervening element down to the node where the key is deleted. • If the right sibling contains more than m/2 elements then push its smallest element up to the parent and move intervening element down to the node where the key is deleted.
  • 85. 4. If neither of the sibling contain more than m/2 elements then create a new leaf node by joining two leaf nodes and the intervening element of the parent node. 5. If parent is left with less than m/2 nodes then, apply the above process on the parent too. If the node which is to be deleted is an internal node, then replace the node with its in-order successor or predecessor. Since, successor or predecessor will always be on the leaf node hence, the process will be similar as the node is being deleted from the leaf node.
  • 86. Example 1 Delete the node 53 from the B Tree of order 5 shown in the following figure.
  • 87.
  • 88. The final B tree is shown as follows.
  • 89. Extended Binary Tree Extended binary tree is a type of binary tree in which all the null sub tree of the original tree are replaced with special nodes called external nodes whereas other nodes are called internal nodes
  • 90. Here the circles represent the internal nodes and the boxes represent the external nodes. Properties of External binary tree 1.The nodes from the original tree are internal nodes and the special nodes are external nodes. 2.All external nodes are leaf nodes and the internal nodes are non-leaf nodes. 3.Every internal node has exactly two children and every external node is a leaf. It displays the result which is a complete binary tree
  • 91. Threaded Binary Tree In the linked representation of binary trees, more than one half of the link fields contain NULL values which results in wastage of storage space. If a binary tree consists of n nodes then n+1 link fields contain NULL values. So in order to effectively manage the space, the NULL links are replaced with special links known as threads. Such binary trees with threads are known as threaded binary trees. Each node in a threaded binary tree either contains a link to its child node or thread to other nodes in the tree.
  • 92. Types of Threaded Binary Tree There are two types of threaded Binary Tree:
  • 93. In one-way threaded binary trees, a thread will appear either in the right or left link field of a node. If it appears in the right link field of a node then it will point to the next node that will appear on performing in order traversal. Such trees are called Right threaded binary trees. If thread appears in the left field of a node then it will point to the nodes inorder predecessor. Such trees are called Left threaded binary trees. In one-way threaded binary trees, the right link field of last node and left link field of first node contains a NULL. In order to distinguish threads from normal links they are represented by dotted lines.
  • 94.
  • 95. The above figure shows the inorder traversal of this binary tree yields D, B, E, A, C, F. When this tree is represented as a right threaded binary tree, the right link field of leaf node D which contains a NULL value is replaced with a thread that points to node B which is the inorder successor of a node D. In the same way other nodes containing values in the right link field will contain NULL value.
  • 96.
  • 97.
  • 98. The above figure shows the inorder traversal of this binary tree yields D, B, E, G, A, C, F. If we consider the two-way threaded Binary tree, the node E whose left field contains NULL is replaced by a thread pointing to its inorder predecessor i.e. node B. Similarly, for node G whose right and left linked fields contain NULL values are replaced by threads such that right link field points to its inorder successor and left link field points to its inorder predecessor. In the same way, other nodes containing NULL values in their link fields are filled with threads.
  • 99.
  • 100. In the above figure of two-way threaded Binary tree, we noticed that no left thread is possible for the first node and no right thread is possible for the last node. This is because they don't have any inorder predecessor and successor respectively. This is indicated by threads pointing nowhere. So in order to maintain the uniformity of threads, we maintain a special node called the header node. The header node does not contain any data part and its left link field points to the root node and its right link field points to itself. If this header node is included in the two- way threaded Binary tree then this node becomes the inorder predecessor of the first node and inorder successor of the last node. Now threads of left link fields of the first node and right link fields of the last node will point to the header node.
  • 101. Advantages of Threaded Binary Tree: •In threaded binary tree, linear and fast traversal of nodes in the tree so there is no requirement of stack. If the stack is used then it consumes a lot of memory and time. •It is more general as one can efficiently determine the successor and predecessor of any node by simply following the thread and links. It almost behaves like a circular linked list.
  • 102. Disadvantages of Threaded Binary Tree: •When implemented, the threaded binary tree needs to maintain the extra information for each node to indicate whether the link field of each node points to an ordinary node or the node's successor and predecessor. •Insertion into and deletion from a threaded binary tree are more time consuming since both threads and ordinary links need to be maintained.
  • 103. Huffman coding using Binary Tree : Huffman coding provides codes to characters such that the length of the code depends on the relative frequency or weight of the corresponding character. Huffman codes are of variable-length, and without any prefix (that means no code is a prefix of any other). Any prefix-free binary code can be displayed or visualized as a binary tree with the encoded characters stored at the leaves. Huffman tree or Huffman coding tree defines as a full binary tree in which each leaf of the tree corresponds to a letter in the given alphabet. The Huffman tree is treated as the binary tree associated with minimum external path weight that means, the one associated with the minimum sum of weighted path lengths for the given set of leaves. So the goal is to construct a tree with the minimum external path weight.
  • 104. Steps to build Huffman Tree Input is an array of unique characters along with their frequency of occurrences and output is Huffman Tree. 1.Create a leaf node for each unique character and build a min heap of all leaf nodes (Min Heap is used as a priority queue. The value of frequency field is used to compare two nodes in min heap. Initially, the least frequent character is at root) 2.Extract two nodes with the minimum frequency from the min heap. 3.Create a new internal node with a frequency equal to the sum of the two nodes frequencies. Make the first extracted node as its left child and the other extracted node as its right child. Add this node to the min heap. 4.Repeat steps#2 and #3 until the heap contains only one node. The remaining node is the root node and the tree is complete.
  • 105.
  • 106.
  • 107. Binary Heap A Binary Heap is a Binary Tree with following properties. 1) It’s a complete tree (All levels are completely filled except possibly the last level and the last level has all keys as left as possible). This property of Binary Heap makes them suitable to be stored in an array. 2) A Binary Heap is either Min Heap or Max Heap. In a Min Binary Heap, the key at root must be minimum among all keys present in Binary Heap. The same property must be recursively true for all nodes in Binary Tree. In Max Binary Heap , the key at root must be maximum among all keys present in Binary Heap.
  • 108.
  • 109. How is Binary Heap represented? A Binary Heap is a Complete Binary Tree. A binary heap is typically represented as an array.
  • 110.
  • 111. Applications of Heaps: 1) Heap Sort: Heap Sort uses Binary Heap to sort an array in O(n Log n) time. 2) Priority Queue: Priority queues can be efficiently implemented using Binary Heap because it supports insert(), delete() and extractmax(), decreaseKey() operations in O(log n) time. 3) Graph Algorithms: The priority queues are especially used in Graph Algorithms like Dijkstra’s Shortest Path and Prim’s Minimum Spanning Tree.
  • 112. Operations on Min Heap: 1) getMini(): It returns the root element of Min Heap. Time Complexity of this operation is O(1). 2) extractMin(): Removes the minimum element from MinHeap. Time Complexity of this Operation is O(Log n) as this operation needs to maintain the heap property (by calling heapify()) after removing root. 3) decreaseKey(): Decreases value of key. The time complexity of this operation is O(Log n). If the decrease key value of a node is greater than the parent of the node, then we don’t need to do anything. Otherwise, we need to traverse up to fix the violated heap property. 4) insert(): Inserting a new key takes O(Log n) time. We add a new key at the end of the tree. If new key is greater than its parent, then we don’t need to do anything. Otherwise, we need to traverse up to fix the violated heap property. 5) delete(): Deleting a key also takes O(Log n) time. We replace the key to be deleted with minimum infinite by calling decreaseKey(). After decreaseKey(), the minus infinite value must reach root, so we call extractMin() to remove the key.
  • 113. Tree Traversal Algorithms Traversal is a process to visit all the nodes of a tree and may print their values too. Because, all nodes are connected via edges (links) we always start from the root (head) node. That is, we cannot randomly access a node in a tree. There are three ways which we use to traverse a tree − •In-order Traversal •Pre-order Traversal •Post-order Traversal Generally, we traverse a tree to search or locate a given item or key in the tree or to print all the values it contains.