Data Structure Material
Data Structure Material
Data Structure
By Ajay Raiyani
[Link]
[Link]
Stack ........................................................................ 29
Application of the stack:............................................................30 Algorithm for push operation ....................................................32 Operation: POP I from the stack................................................33 Operation: PEEP 2nd element from the stack. ..........................34 What is queue? .........................................................................36 Implementation of Queue:.........................................................36
Queue ....................................................................... 36
Algorithm for simple queue:- .....................................................38
Insert function: ................................................................... 38 Delete Function ................................................................... 39 Print function ...................................................................... 40 Search Function .................................................................. 40 Update function................................................................... 40
Tree.......................................................................... 45
Definition:-................................................................................45 Explain Tree:- ...........................................................................45 Binary Tree:-.............................................................................46 Representation OR Implementation of Binary Tree. ...................47 Operation Of Binary Tree ...................................................... 49 Algorithm for preorder:- ....................................................... 50
[Link]
Inorder:-............................................................................ 50 Algorithm For Inorder Traversal of Binary Tree:- ...................... 52 Postorder Traversal:- ........................................................... 52
[Link]
Atmiya Infotech Pvt. Ltd. Algorithm for Postorder Traversal of Binary Tree. :-.................. 53 Application of Binary Tree:-.......................................................53
Graphs ...................................................................... 55
[Link]
[Link]
Linked List
Singly Linked List
Explain Singly Linked list: Ans. A singly linked list is a linked list in which each node contains only one link field pointing the next node in the list. Each node is divided in two parts. 1. Information part. 2. Contains address of next node. For Example: Head
NULL
Head = Pointer Variable Points to first element (node) of in the list. NULL=It indicates the end of the list.
[Link]
[Link]
2. [Allocate the New node] NEW NODE 3. [Initialize the fields of new node] INFO (NEW) = X LINK (FIRST) = NEW 4. [Want to insert another node] Read (Choice) 5. [Set the LINK field of Last inserted element] LINK (FIRST) = NULL 6. [Finished] Return
2. Algorithm for the Inserting the element in the Simple Linked List
Function INSERT (TEMPHEAD,KEY) [This Function Insert the element after the node, which have the information field equal to the X. And HEAD is the pointer variable, which points to the first element of the list] 1. [Allocate the Memory for the NEW node] NEW NODE 2. [Set fields of the NEW node] INFO (NEW) = X LINK (NEW) = NULL 3. [Insertion as the first node] LINK (NEW) = TEMPHEAD TEMPHEAD = NEW Return (HEAD) 4. [Save the address of the first element of the list] SAVE = TEMPHEAD 5. [Find the element after which we want to insert the element] Repeat while INFO (LINK (SAVE) ) != NULL 6. [Insert the element] LINK (NEW) = LINK (SAVE) LINK (SAVE) = NEW
[Link]
[Link]
R e t u r n
[Link]
[Link]
[Link]
Ans. The Linked list in which each node has two pointers, one to store
address of forward link & second to store address of backward link, is called
for point out right most node. Reason for use of doubly linked list. OR Disadvantages of Singly linked list. Ans.
Suppose we have singly linked list in which we want to insert a node
Backward Address
[Link]
[Link]
Inserting node in to or Deleting one node from the list is much easier
task because we dont have to search the list sequentially to locate the
preceding node.
Algorithm for the Creation of the Doubly linked list
Procedure CRETE(TEMPHEAD)
[This Procedure Create the Doubly linked list TEMPHEAD is the pointer variable which point to the first element of the list and LPTR and RPTR is the pointer field of the NODE which points the Previous and new Node of
the list respectively.] 1. [Repeat thru step] Repeat while choice! = n 2. [Allocate the new Node] NEW NODE 3. [Set field of new Node] INFO (NEW) = X LPTR (NEW) = RPTR (RPTR) = NULL 4. [Insert the element] RPTR (TEMPHEAD) = NEW LPTR (RPTR (TEMPHEAD)) = TEMPHEAD TEMPHEAD = RPTR (TEMPHEAD) 5. [Read the Choice] Read (choice) 6. [Finished] Return
[Link]
[Link]
, KEY )
[Link]
[Link]
[This Function inserts an element after the node which the info filed equals to the KEY and the returns the address of the first node] 1. [Allocate the memory for the new node] NEW NODE INFO (NEW) = X 2. [Insertion as the first node] RPTR (NEW) = TEMPHEAD LPTR (NEW) = NULL RPTR (TEMPHEAD) = NEW TEMPHEAD = NEW Return (TEMPHEAD) 3. [Save address of the first node] SAVE = TEMPHEAD 4. [Find the element after which we want to insert the element] Repeat thru step while RPTR (SAVE)! = NULL 5. [Check for the desire position] If INFO (RPTR (SAVE)) = KEY Then RPTR (NEW) = RPTR (SAVE) LPTR (NEW) = SAVE LPTR (RPTR (SAVE)) = NEW RPTR (SAVE) = NEW 6. [Finished] Return (TEMPHEAD)
Algorithm for the deleting an element from the doubly linked
list
the list and KEY specify info of the node which is to be deleted] 1. [Check for the empty list] If TEMPHEAD = NULL Then write (Empty list)
[Link]
[Link]
RPTR (TEMPHEAD) = TEMPHEAD PRV (TEMPHEAD) = NULL Free (TEMP) Return (TEMPHEAD) 3. [Save the address of the first node] SAVE = TEMPHEAD 4. [Search for the desire node] Repeat while thru step 5 RPTR (SAVE)! = NULL 5. [Check for the information field] If INFO (RPTR (SAVE)) = KEY Then TEMP = RPTR (SAVE) RPTR (SAVE) = RPTR (RPTR (SAVE)) LPTR (RPTR (SAVE)) = SAVE Free (TEMP) 6. [Finished] Return (TEMPHEAD)
Algorithm for the print the doubly list
[Link]
11
[Link]
Explain Singly Circular Linked List: Ans. A singly circular linked list is a linked list in which the last node of the list point to the first node in the list.
In Circular linked list, we can start at any node in the list & travel the whole list. For this reason we can make our external pointer to the list
pointer to any node & still access all the node in the list.
Representation of Circular Linked list:
Head
Head
Advantage of Circular List over Singly linked list.
[Link]
12
[Link]
From this given node all nodes can be reached by many changing through the list. 3. It concerns the deletion operation. In singly linked list to delete desired node, it is necessary to give the address of first node of the list. 4. This necessity result from the fact that in order to delete desired node. The predecessor of this node has to be found. 5. To find the predecessor required that a search could be carried out by changing through node from the first node of the list such requirement doesnt exist for circular list.
Disadvantage:
Ans. It is possible that without some care in processing, it is possible to get in to an infinite loop. Solution of Disadvantage: Ans. In processing a circular list, it is important that we are able to delete the end of list. This deletion of end is achieved by placing special node, which can be easily identified in the circular list. This special node is often called the list head of the circular list. Representation of circular list with list head is given as in following figure.
Head
[Link]
[Link]
3. [Allocate the New node] NEW NODE 4. [Initialize the fields of new node] INFO (NEW) = X LINK (SAVE) = NEW SAVE = NEW 5. [Want to insert another node] Read (Choice) 6. [Set the LINK field of Last inserted element] LINK (SAVE) = TEMPHEAD 7. [Finished] Return
[Link]
6. [Insert in the list other than the first node] Repeat while INFO (LINK (TEMPHEAD)) = KEY 7. [Set the link for the NEW node]
Yogidham, Kalawad Road, Rajkot. Ph : 572365, 576681 14
[Link]
Proce
LINK (NEW) = LINK (TEMPHEAD) LINK (TEMPHEAD) = NEW 8. [Finished] Return (FIRST)
Function DELETE (TEMPHEAD, KEY) [This Function deletes an element from the circular list] 1. [Check for the empty list] If TEMPHEAD = NULL Then write (Empty List) 2. [List contain Single node] if LINK (TEMPHEAD) = TEMPHEAD Return NULL Free (TEMPHEAD) 3. [Save the address of the first node] FIRST = TEMPHEAD 4. [Deletion of the first node] Repeat while LINK (TEMPHEAD)! =NULL 5. [Delete the node] LINK (TEMPHEAD) = LINK (FIRST) LINK (FIRST) = FIRST Return (FIRST) 6. [Finding desire node] Repeat while INFO (LINK (TEMPHEAD)) = KEY 7. [Deletes the node] TEMP = LINK (TEMPHEAD) LINK (TEMPHEAD) = LINK (LINK (TEMPHEAD)) Free (TEMP) 8. [Finished] Return (FIRST)
Algorithm for the printing the element of the circular list
[Link]
[Link]
15
[Link]
If TEMPHEAD = NULL Then write (Empty list) Return 2. [Print the desire node] Repeat while LINK (TEMPHEAD)! = TEMPHEAD Write (INFO (TEMPHEAD)) 3. [Finished] Return
Order Linked List:
Trace of the construction of an ordered linked linear list using Function INSORD
Algorithm:
X is the info field of the new node] 1. [Allocate Memory for the new node] NEW = NODE
[Link]
2. [Copy the information field of the new node] INOF (NEW) = X 3. [Is the list empty?]
16
[Link]
If TEMHEAD = NULL Then LINK (NEW) = NULL Return (NEW) 4. [Does the new node precede all other node in the list?] If INFO (NEW) <= INFO (TEMPHEAD) Then LINK (NEW) = TEMPHEAD Return (NEW) 5. [Save the address of the first node] FIRST = TEMPHEAD 6. [Search the predecessor of the new node] Repeat while LINK (TEMPHEAD)! = NULL and INFO (LINK (TEMPHEAD)) <= INFO (NEW) TEMPHEAD = LINK (TEMPHEAD) 7. [Set link fields of the new node] LINK (TEMPHEAD) = LINK (NEW) LINK (SAVE) = NEW 8. [Return first node pointer] Return (FIRST).
Ans. There are no of applications of linear linked list, many examples could be given but only a few will be described here, 1. In Line Editor: One interesting use of linked list is line editor. We can keep a linked list of line nodes. Each containing line number, a line of
Text & a pointer to next line information node. 2. In String Manipulation: Variable string length can also be represented as linked list. A string may be declared as a record that contains a string count & a pointer to the linked list of character.
Circular manipulation is very simple with this string
[Link]
implementation.
In one simple representation, each character node contains a string character & a pointer to the next character node. With this
Yogidham, Kalawad Road, Rajkot. Ph : 572365, 576681 17
[Link]
representation much more space is used for the pointer and for the character.
If space is limited, each node can contain several character, as
string. 3. In Implementation of Sparse matrix: A sparse matrix is a table which relatively with few non-zeros
elements. 4. In Operating System: The allocation of memory space may be managed doubly linked
user jobs waiting to execute through linked queue of control block. 5. Implementing stack & queue: It is easy to implement stack & queue operation using linked
list rather than array implementation of stack & queue. 6. In Polynomial Manipulation: A linked list uses as a typical term of polynomial. The common operation performs on polynomial are addition, subtraction,
multiplication, division, integration & differentiation. 7. Linked Dictionary: An important part of any compiler is the construction & maintenance of a dictionary containing name & their associated
[Link]
Ans.
A Dummy header node is the list before the first actual data node can
[Link]
For Example: - No of Node. A query Algorithm can then determines the status of list by
examine the contents of the PREFIRST node. This amount to adding node
2000 20
3000
[Link]
1000
19
[Link]
50
3000
4000 100
50
After Insertion
Head 8000 10 1000 2000 3000 40 5000 2000 20 304000 5000
NULL
3000
50
[Link]
20
[Link]
10
newNode
After Appending
head 1000 10 1000 2000 3000 4000 5000
8000
newNode
8000
Deletio
[Link]
21
[Link]
After Deletion
head
2000 10 2000
3000
405000 50
After deletion
head
1000 10 2000
3000
405000 50
4000 5000 40
[Link]
5000
22
[Link]
head 1000 1000 NULL 2000 10 1000 3000 2000 20 2000 4000 3000 30 4000 404000 5000
NULL
3000
5000 50
5000
404000
50
NULL
After Insertion
head 8000
1000 8000 2000 10 1000 2000 20 3000 4000 3000 30 3000 5000 404000 5000 50
NULL
2000 4000
[Link]
30
3000
5000
40 4000
50
23
[Link]
8000
NewNode 8000
100 NULL
After Append
head 1000 1000 NULL 2000 10
2000
1000 3000
20 2000 4000
30
3000
5000 40 4000
50
After Deletion
head 1000 1000 NULL
[Link]
5000
30
5 0
NULL
4000
3000
40
5000
5000 4000 50
24
[Link]
4000 5000
3000 404000
NULL
30
3000
5000 50
After deletion
head 1000 1000 NULL 2000 10
2000
1000 3000
20 2000 4000
5000 5000
3000 403000
NULL
30
3000
5000 50
[Link]
25
[Link]
After Insertion
head 1000 1000 NULL 2000 101000 2000 3000 30 20 20004000 8000 5000 8000 404000 50 5000 newNode 8000NULL 80004000 100
3000
3000
2000 20 3000
head 1000 1000 10 2000
3000 4000
[Link]
Top
50
26
[Link]
3000
4000 100
50
After Insertion
head 8000 10 1000 2000 1000 newNode 8000 8000 4000 100 1000 3000 40 5000 10 2000 20 3000 3 0 4 2 0 0 0 0 2 0 0 0 5 0 0 0 2000
3000
4000
5000
newNode
After Insertion
head 1000
3000 4000
[Link]
50
405000 50 1000
27
[Link]
h e a d
newNo de 8000
After Appending
1 head 1000 10 1000 2000 0 0 0 1 4000 0 0 0 1 0 2 0 0 0 2000 20 3000 3000 30 4000 5000
800 0 newN ode 800 0
[Link]
2000
20
3000
40 5000 50
28
[Link]
50
After Deletion
50
After deletion
head 1000 1000 10 2000
3000
50
Stack
What is Stack? Ans. A stack is a data structure in which addition of New element or
deleting of existing elements always takes place at the same end. This
where every new plate added to the stack is added at the top.
[Link]
Similarly, every new plate taken off the stack is also from the
29
[Link]
Atmiya Infotech Pvt. Ltd. When add an item to a stack we say that we push it on the stack & when we remove an item we say that pop it from the stack. So we can say there are mainly two types of operations, Push & Pop, stack also sometimes called LIFO (Last In First Out). The real life example of Stack: Ans. As we talk about real life example, we all are familiar with a railway system for shutting cars,
A railway Shutting system Representation As shown in figure, in this system the last railway car to be placed on the stack is the First-level. Using respectively the insertion & deletion operations permits the cars to be arranging on the output railway line in various orders.
What is the major advantage of pointer Implementation stack over array Implementation of stack? Ans.
1. With the array Implementation of stack. It is necessary to preallocate the max. Stack size at the time of implementing the program. 2. In pointer Implementation of stack is not need of the stack size. 3. With array implementation of stack, we must check for stack overflow but with linked list implementation we dont need this. 4. In array implementation if we want to insert a large number of element then we must define the big array. So allocate the memory as per our requirements. 5. When we delete the item from memory that memory cant use for any other purpose. 6. In pointer implementation when we delete the item, the memory is free for any other purpose.
[Link]
Ans.
30
[Link]
1. Recursion: Recursion is the name given to the technique of defining a set on a process in term of itself. When a called function in turn calls another function a process of chaining occurs recursion a special case of this process when a function calls itself.
OR
There are two important conditions that must be satisfied by any recursive procedure.
1)
Each time a procedure calls itself (either directly or indirectly) it must be nearer
in some sense, to a solution. In the case
2)
of the factorial function, each time that the function calls itself, it argument is decrement by one, so the argument of the function is getting smaller. There must be a decision criterion for stopping the process or computation. In the case of the factorial function, the value of n must be zero.
2. Polish notation: We are already familiar with arithmetic expressions in infix notation. In this notation a binary operator is placed between its operands. For example: A+BC A(CD)/(B*D) A+B*DE/F The operations are normally carried out from left to right. We also have procedure rules for evaluating expressions.
A*B+C+D*E would be to multiply B & A, then adding it to C, saving
[Link]
that result temporarily say in RESULT, Then multiplying D & E, and add it to the RESULT. Therefore we have to followed the sequence as given below, AB * C + DE * +
31
[Link]
reverse-polish notation. We can convert infix notation to postfix notation by using stack data structure.
3. Stack Machine: One of the main problem with using machines which have a very limited no of registers is how to handle the store of intermediate results to solve this problem such machines are known as stack machine. Many of the machines, which are appearing on the market, include in their architecture hardware stacks or stack mechanisms. The such machines are the PDP-11 & the Burroughs 5000. Both machines are particularly well suited for the stacking of local variables & parameters that arise in procedure calls of block nested languages.
What is push operation? Write an algorithm to push an element in to the stack. Ans.
When an item is added to a stack, It is pushed on to the stack, given a stack & an item I, performing the operation push (st,I) adds the item I to the top of stack st. Push operation is applicable to any stack.
Variables
Size Total no of elements tos Top of the stack. val Information which you want to insert in stack. Stack[] Array of stack. Step 1 [Check that the stack is Full] If tos = size-1 then (print message) Stack is full.
Step 2 [else]
[Link]
32
[Link]
What is pop operation? Write an algorithm to pop an element in to the stack. Ans.
removed of top most information new value of the pointer top becomes the previous value of top that is top=top-1 & free position is allocated as free
The pop operation removes the top most item to understand after
space.
tos
I B A Stack (st)
tos
B A
Stack is Empty
[Link]
Step 3
[Stop]
What is peep operation? Write an algorithm to peep an element from the stack. Ans. Yogidham, Kalawad Road, Rajkot. Ph : 572365, 576681 33
[Link]
tos
I B A Stack (st)
1. inse rt 10 2. inse rt 20 3. inse rt 30
tos
I B A
Stack is Empty
return Step 2 [Return the Ith element from top of stack]
[Link]
34
[Link]
6. insert 40 7. insert 50
10
push(10)
10 20
push(20)
10 20 30
push(30)
10 20
pop( )
10
pop( )
10 40
push(40)
10 40 50
push(50)
[Link]
35
[Link]
Queue
What is queue?
Ans. Queue is very useful in computer science. We define a queue to be a list in which all addition to the list is
made at the one end & all deletion from the list is made at other
end. Queue are also called First In First Out list of FIFO for sort. We may draw queue in any one of the forms as given below. Data Data Data Data
front Data
rear
front
Queue makes two open ends called front & rear. Similarly to stack operation, that operation define a queue are given below, 1. Create a queue 2. Check whether queue is empty 3. Check whether queue is full 4. Add item at the rear queue 5. Remove item from front of queue 6. Read the front of queue 7. Print the enter queue There are mainly two types of queue, 1. Priority queue. [Link] queue. For example: The railway reservation counter is an example of queue where the people collect their tickets on the first in first out
[Link]
basis.
Implementation of Queue:
36
[Link]
to Q the value NULL of front pointer implies an empty queue. Queue is also called FCFS(First Come First Served). Draw a queue using following data. Ans.
Consider a size 6. Assume that the queue is initially empty. It is required to insert element 1,2 & 3 followed by delete 1 & 2 & insert
4,5 & 6.
1 front 1 Front 123 Front 23 Front 3 Front rear 34 Front rear rear rear rear 2 rear Front
[Link]
rear
[Link]
Now, if we try to insert 7, an overflow occurs even through the first two cells are free. To avoid this drawback, we can arrange these elements in a circular fashion with Queue[0] following Queue[n-1]. It is then called a circular array representation. We may depict a circular queue as given in figure,
Note:- To see the disadvantage of queue see the advantage of circular queue.
Algorithm for simple queue:Insert function: Variables: val = Information of user. rear = Variable for last subscript value. front = Point first element in queue. size = Total no of elements. queue = Array of queue.
[Link]
38
[Link]
Step 1:-
then
[Print message]
return
Queue is overflow
Step 2:-
[else]
read value
Step 3:-
Step 4:-
[Input an element]
queue [rear]val
Step 5:-
[Stop]
Delete Function Step 1. [Check that queue is empty] If front = -1 then (print message)
Queue is empty
return Step 2. [Check that front & rear both points to same element] If front = rear then
Front -1 Rear -1 Return
[Link]
39
[Link]
Atmiya Infotech Pvt. Ltd. Print function Step 1. [Check that queue is empty] If front = -1 then (print message)
Queue is empty
return Step 2. [Print Queue from front to rear] for ifront to rear print queue[i] Step 3. [Stop]
Search Function Step 1. [Check that queue is empty] If front = -1 then (print message)
Queue is empty
[print message]
return Step 5. [Stop] Update function Step 1. [Check that queue is empty] If front = -1 then (print message)
Queue is empty
[Link]
[Link]
40
[Link]
Circular Queue
Explain Circular Queue:Any number of items could be placed on the queue, so long as items
were also being taken off. This implementation of a queue is called circular queue, because it uses its storage array as if it were a circular instead of a linear list. In essence of queue is full when the stored index is one index less that the retrieve index, otherwise there is room in the queue for another
event.
Circular Queue Perhaps the most common use of a circular queue is in operating system where a circular queue holds the information read from & written to disk files on the console. Circular queues are also used in Real Time Applications programs. Which must continue to process information while buffering I/O request.
[Link]
Ans.
But in circular queue we can insert new item to the location from where previous item to be deleted using crap
[Link]
Atmiya Infotech Pvt. Ltd. In circular queue we can insert n numbers of elements
continuously but condition is that we must used deletion. Where
In circular queue implementation the full queue condition & empty queue condition became same & it is inefficient for program therefore it in necessary to delete the full queue condition at (Array size 1) location meaning that if we have array of 10 location than we can use only a location to insert a queue.
Variables: = Points first element of queue. Rear = Variable for last subscript value. Queue = Array of queue Size = Total no of elements.
Front
Step 1.
queue]
Step 2.
Step 3.
[Link]
[Check that Queue is full] If front = 0 & rear = size1 then [Print message] Queue is overflow return [Else]
[Check that Queue is full] if rear = front-1 then [Print message] Queue Overflow return [Else] [Check that rear points to last element of
if rear = size-1 then
rear0 42
[Link]
Atmiya Infotech Pvt. Ltd. queue[rear]val return [Else] [Check that rear doesnt points to any if rear=-1 then front 0 rear 0 queue[rear] val return P.T.O.
Step 4. element]
Step 5.
Step 6.
Step 8.
Delete Function: Step 1. [Check that front & rear both points to same] If front = rear then
Front -1 Rear -1 Return
Step 2. [Else] [Check front points to last element] If front = size 1 then
Front 0
Step 3. [Else]
Front front +1
[Increment front by 1]
[Link]
43
[Link]
Atmiya Infotech Pvt. Ltd. Step 1. [Check that front points to any before rear element] If front <= rear then [Repeat i up to rear]
for ifront to rear print queue[i]
Step 4. [Stop]
Application of Queue:
In a computer network messages from one to another computer are generally created asynchronously. These messages therefore need to be buffered until the receiving computer is ready for it these communication buffers make extensive use of Queues by storing of Queues
by storing these message in a queue. Also the messages need to be sent to
receiving computer in the some order in which they are created. I.e. FIFO.
[Link]
44
[Link]
Tree
Definition:o A Tree structure means that the data is organized as branches, which relate the info. It is a non-linear data structure. One very common gynecological chart that is used to represent tree structure is lineage. The lineage chart represents ancestors.
Explain Tree:o o o o o o A Tree structure means that the data is organized as branches, which relate the info. It is used to represent the relationship among data element in so many applications. Tree is a non-linear data structure. Trees are encountered frequently in every life. An arrays, lists, stacks, queues are linear data structure. Graphs are classified in the non-linear category of data structure. You may recall from the previous blocks on graph that an important class of graph is called Trees. In Tree structure each node may paint to several other nodes. Thus a tree is a very flexible & powerful data structure that can be used for a glide variety of application. Although the nodes in a general tree may contain any no of pointer to the other tree nodes. A large no of data structure have at the most two pointers to the other tree nodes. This type of tree is called Root. Together with two binary trees called the left sub tree & right sub tree of the root. Gaining from the leaves to the root is called climbing the tree & gaining from the root to the leaves is called descending the tree. One of the most fundamental & useful concept is computer science. Trees find their application such as compiles construction database design, operating systems etc. For (e.g.) :Suppose we wish to use a data structure to represent a person & all of his or her descendants. Assume that the persons name is Rahul & that he has 3 Children, sanjay, Sameer, Nisha. Also suppose that sameer has 3 children, Abhay, Ajit & Madhu and nisha has a child Neha. We can represent rahul & his descendants guit naturally with the tree structure shown below.
o o
o o o o
[Link]
45
[Link]
Binary Tree:o A Binary tree is a finite set of element that is either empty or is partitioned into three disjoint subsets. The first subset contains a single element called the root of the tree. The other two subsets are themselves binary trees called the left & right subtree of the original tree. A left or right subtree can be empty. Each element is called a NODE of the tree. For (e.g):We have a root R & two disjoint binary tree, T1 & T2 (Which are called the left sub tree & right sub tree respectively). If T1 is non-empty then the root of the T1 is called the left successor of R. If T2 is non-empty then the root of T2 is called as right successor of R.
[Link]
46
[Link]
Here root is 1 & its predecessor is 2 & right successor is 3. Similarly left successor of 2 is 4& right successor is 5.
[Link]
47
[Link]
Info
When a node has no child then the corresponding pointer fields are Null. The given figure shows a linked representation of the binary tree. The Llink & Rlink fields are pointer to left child & the right child of a node.
Advantages:The insertion & the deletion in value no data movement except the rearrangement of pointer . Thus, processing time is reduce. Disadvantages:Wastage of memory space in NULL pointer. The above given figure has 10 NULL pointers.
[Link]
Given a node, it is difficult to determine its a parent. Its algorithm implementation is more difficult in languages such as BASIC, COBOL. FORTRON. Solution of Disadvantages:-
48
[Link]
[Link]
First of all consider the root node A then consider its left subtree as shown in upper figure.
49
[Link]
Atmiya Infotech Pvt. Ltd. Now we process root of subtree T1 & then its left subtree T3 that is a terminal node o. Now, consider the right subtree of T1 that T4, the root of T0 is E & then left subtree of T4 is T7 that is the terminal of all the nodes of the left subtree T1 is finished & is given as, B,D,E,F.
Continue the same process for the right subtree of A & its nodes.
After completion of the preorder traversing of binary tree we get list of nodes as following, A, B, D, E, F, C, G, H, I, J. The preorder traversal of a binary tree is defined as follows, First process the root node. Second traversal the left subtree in preorder. Third traversal the right subtree in preorder. Algorithm for preorder:Temproot:- Temporary pointer variable initialized with root. Info:- Information part of node. Left:- Pointer to left most node. Right:- Pointer to right most node. Step-1:-( Repeat step 2,3,4 & check that temproot is not equal to NULL) If temproot is not equal to NULL then Step-2:-(Print information part of node) Print info(temproot) Step-3:-(Call function itself as a left most node) Preorder(left(temproot)) Step-4:-(Call function itself as a right most node) Preorder(right(temproot)) Step-5:-(Stop) Inorder:In inorder traversal method first of all we have to process the left subtree T1 of the root R in Inorder then process the root R & at the last. We process the right subtree T2 of R.
[Link]
50
[Link]
Consider the figure we first process the node D then the root of D is B node & then the right subtree of B. now the left subtree of e is f that is the terminal node thus, all the nodes of left subtree of root is processed & resulting list is as follows: Left Tree:T1 B T3 T4 D E T9 J Then we process the root A & then process the right subtree T2.
[Link]
Combining all the list of elements of the left subtree T1 & root & T2 element of the right subtree T2, We get the list of all the element in the binary tree T as following Yogidham, Kalawad Road, Rajkot. Ph : 572365, 576681
51
[Link]
Atmiya Infotech Pvt. Ltd. D, B, J, E, A, F, C, H, G, I. The inorder to traversal of a binary tree is define as follows, Traverse the left tree in Inorder. Process the root node. Traverse the right tree in Inorder. Algorithm For Inorder Traversal of Binary Tree:Variable:Same as Preorder. Step-1:- (Repeat step2,3 & 4 & check that temproot is not equal to NULL) If temproot is not equal to NULL then Step-2:-(Call function itself as a left most node) Inorder (left(temproot)) Step-3:-(print Information part of node) Info (temproot) Step-4:-(Call function itself as a right most node) Inorder (right(temproot)) Step-5:-(Stop) Postorder Traversal: In the postorder traversal first of all we process the left subtree T1 of root in postorder. Then, the right subtree T2 in postorder & at the last the root. A T1 T2 B T3 T4 T6 D E T7 T9 F I J G H T8 T5 C
[Link]
Consider the figure, we first process the terminal node D. Now, we consider right subtree of B that is E, the left subtree of E is F, so process F at the second priority as, Yogidham, Kalawad Road, Rajkot. Ph : 572365, 576681
52
[Link]
Atmiya Infotech Pvt. Ltd. there is no right subtree of E & at list root of subtree T1 that is B, the resulting list of elements after traversing the left subtree in postorder is as follows
B T1 T3 D T7 F The final list of elements after traversing binary tree is as follows, D, F, E, B, G, I, J, H, C, A. Postorder traversal of binary tree as defined as follows, Traverse the left subtree in postorder. Traverse the right subtree in postorder. Process the root node. Algorithm for Postorder Traversal of Binary Tree. :Variable: Same as preorder. Step-1:-(Repeat step 2,3,4 & check that temproot is equal to NULL) If temproot is not equal to NULL then Step-2:- (Call function itself as a left most node) Postorder(left(temproot)) Step-3:- (Call function itself as a right most node) Postorder(right(temproot)) Step-4:-(Output the information part of node) E T4
[Link]
Info(temproot) Step-5:-(Stop)
Application of Binary Tree:There are three types of Binary tree application Yogidham, Kalawad Road, Rajkot. Ph : 572365, 576681 53
[Link]
Atmiya Infotech Pvt. Ltd. Manipulation of Arithmetic operation. Symbol table constructor. Syntax analysis.
MANIPULATION OF ARITHMETIC OPERATION We will first discuss the relationship between binary tree & formulas in prefix or suffix notation. Next we will discuss the mechanical manipulation of expressions that are represented by binary tree. We observe that the formulas in reverse polish notation are very useful in the compilations process. There is a close relationship between binary tree & formulas in prefix or suffix notation. Lets write any where the left & right subtree are as the left & right operands of the tree are the variable & constants in the expression. We may want to symbolically add, subtract, multiply, divide, differential, integrate etc. such expressions. Symbolic table Construction:One of the criteria that a symbol table routine must meet is that the table searching must be performed efficiently. The two required operations that must be performed on symbol table are insertion & look-up each of which involves searching. A binary tree structure is chosen for two reasons. The first reason is if the symbol entries as encountered one uniformly distributed according to lexico graphic order Second a binary tree is easily maintained in lexico graphic Order in the sense that only a few paints need to be changed. Also the message needs to be sent to receiving computer in the same order in which they are created i.e. FIFO (First In First out) order.
[Link]
54
[Link]
Graphs 1) Graph:A graph G consists of a non-empty set V called the set of nodes of the graph a set E which is the set of edge of the graph & a mapping from the set of edges E to a set of pairs of elements of V.
Or
A graph consists of a set of nodes & a set of edges. A pair of nodes specifies each edge in a graph.
2) Node: -
A graph G consists of non empty set V called the of Nodes of the graph.
set
3) Structure: Structure is a user define data type that allows the user to perform certain(several) operations on to the different types of DATA TYPES.
5) Weighted Graph: A graph in which weights are assigned to every edge is called a weighted graph.
called a Sling.
7) Complete Graph: A graph is complete or completely connected if and only if every pair of vertices are connected in at list
one direction.
8) Mixed Graph: If some of the edges are directed and some of the edges are undirected in a graph then the graph is
[Link]
55
[Link]
9) Pointer: -
Pointer is a one type of utility which is provided by the C Language that can store the address of the any particular node.
10)
16) 11)
12)
13)
14)
15)
[Link]
Isolated Vertex: In a graph, which is not adjacent to any other node is called Isolated vertex.
A graph is called a directed graph if each edge is identified by ordered pay of vertices (vi, vj) Undirected graph the first element of the pair is called the start vertex and the second element is called the end vertex of the edge. The edge is set to be directed from the start vertex to the end vertex therefore the pairs (vi, vj) and (vj, vi) represent two different edges in a directed graph.
Undirected Graph:In Graph G=(V,E) an edge which has no specific direction is called an Undirected edge. A graph in
which every edge is undirected is called
Undirected graph.
called a
Acyclic: -
Loop . The A directed graph is acyclic if it has no cycles. direction of Otherwise graph is known as cyclic graph. loop of no significance, Outdegree of node: hence it can be The outdegree of vi is the number of edges whose considered start vertex is vi. either a directed or undirected Indegree of node: edge.
Directed Graph: -
56
[Link]
25)
17)
18)
19)
20)
21)
22)
23)
24)
[Link]
with the ordered pair of nodes (u,v). Then the edge X is said to be initiating or originating in the
Multi Graph: The no of edges which have V as their terminal node is called the Indegree of V.
Any graph, which contains some parallel edges, is
Simple Graph: If there is no more than one edge between a pair of nodes, then such a graph is called a simple
graph.
Total-Degree of node: Length: The sum of the outdegree & indegree of a node V is
Elementary path
A path in which all the nodes through which it
graph.
57
Initiating (Originating) & Terminating (Ending) Nodes:Let (V,E) be a graph & let XEE be a directed edge associated
[Link]
26)
Cyclic: -
A path which originates & ends in the same node is called a cycle.
27)
28) 29)
Root: A cyclic digraph, which has one node, called its root.
Ordered Tree: If in a directed tree an ordering of the nodes at each level is prescribe, then such a tree is called an
ordered tree.
30)
Binary Tree: A binary tree is a finite set of elements that is either empty or is partitioned into three disjoint subsets.
31)
Successor & Predecessor: A node n is adjacent to a node m if there is an edge from m to n. If n is adjacent to m, n is called a successor of m & m a predecessor of n.
32)
33)
M-Ary Tree: If in a directed tree the outdegree of every node is less than or equal to m, then the tree is called an mary tree.
34)
Sub tree: A tree contains one or more nodes such that one of
[Link]
the nodes is into a finite number of trees called sub called the tree. root while all other nodes are partitioned Yogidham, Kalawad Road, Rajkot. Ph : 572365, 576681 58
[Link]
35)
Descendent: -
36)
[Link]
[Link]