TREES
SESSION OUTLINE:
• TREE
• BINARY TREE
• TREES TRAVERSAL
• BINARY SEARCH TREE
• INSERTION AND DELETION IN BINARY SEARCH TREE
• AVL TREE
TREES• TREE DATA STRUCTURE IS MAINLY USED TO REPRESENT DATA CONTAINING A HIERARCHICAL RELATIONSHIP BETWEEN ELEMENTS .
TREES
• COLLECTION OF NODES ORFINITE SET OF NODES
• THIS COLLECTION CAN BE EMPTY.• DEGREE OF A NODE IS NUMBER OF NODES
CONNECTED TO A PARTICULAR NODE.
• A PATH FROM NODE N1 TO NK IS DEFINED AS A SEQUENCE OF NODES N1, N2, …….., NK.
• THE LENGTH OF THIS PATH IS THE NUMBER OF EDGES ON THE PATH.
• THERE IS A PATH OF LENGTH ZERO FROM EVERY NODE TO ITSELF.
• THERE IS EXACTLY ONE PATH FROM THE ROOT TO EACH NODE IN A TREE.
TREES
• HEIGHT OF A NODE IS THE LENGTH OF A LONGEST PATH FROM THIS NODE TO A LEAF
• ALL LEAVES ARE AT HEIGHT ZERO• HEIGHT OF A TREE IS THE HEIGHT OF ITS ROOT
(MAXIMUM LEVEL)
TREES
• DEPTH OF A NODE IS THE LENGTH OF PATH FROM ROOT TO THIS NODE
• ROOT IS AT DEPTH ZERO
• DEPTH OF A TREE IS THE DEPTH OF ITS DEEPEST LEAF THAT IS EQUAL TO THE HEIGHT OF THIS TREE
TREES
FULL BINARY TREE
A binary tree is said to be full if all its leaves are at the same level and every internal node has twochildren.
The full binary tree of height h has
l = 2h leaves and
m = 2h – 1 internal nodes.
COMPLETE BINARY TREE
A complete binary tree is either a full binary tree or one that is full except for a segment of missing leaves on the right side of the bottom level.
TREE TRAVERSALS
IN-ORDER TRAVERSAL : 1,2,3,4,5,6,7,8,9PREORDER TRAVERSAL:1,2,4,7,5,8,3,6,9
ARE GIVEN.
DRAW BINARY TREE FROM THESE TWO TRAVERSALS?
I) SEQUENTIAL REPRESENTATION (ARRAYS)
REQUIRED THREE DIFFERENT ARRAYS
1.ARR (CONTAIN ITEMS OF TREE)
2.LC (REPRESENT LEFT CHILD)
3.RC (REPRESENT RIGHT CHILD)
IN LINKED LIST REPRESENTATION
EACH NODE HAS THREE FIELDS:-
DATA PARTADDRESS OF THE LEFT SUBTREE. ADDRESS OF THE RIGHT SUBTREE
EXTENDED BINARY TREEA BINARY TREE CAN BE CONVERTED TO AN EXTENDED BINARY
TREE BY ADDING NEW NODES TO ITS LEAF NODES AND TO THE NODES THAT HAVE ONLY ONE CHILD. THESE NEW NODES ARE ADDED IN SUCH A WAY THAT ALL THE NODES IN RESULTANT TREE HAVE ZERO OR TWO CHILDREN.
IT IS ALSO KNOWN AS 2-TREE.THE NODES OF THE ORIGINAL TREE ARE CALLED INTERNAL NODES.
NEW NODES THAT ARE ADDED TO BINARY TREE ,TO MAKE IT AN EXTENDED BINARY TREE ARE CALLED EXTERNAL NODES.
25
Binary Search tree
It is a tree that may be empty.and non-empty binary Search tree satisfies the following properties :-(1)Every element has a key or value and no two elements have the same key that is all keys are unique.(2) The keys if any in the left sub tree of the root are smaller than the key in the node.(3) The keys if any in the right sub tree of the root are larger than the key in the node.(4) Left and Right sub trees of the root are also binary search tree.
Example of the Binary Search Tree :- The input list is 20 17 6 8 10 7 18 13 12 5
20
17
6 18
5 8
7 10
13
12
Representation of Binary Search Tree :-
struct btreenode{ struct btreenode *left; int data; struct btreenode *right;};
Function code of Inorder :-
void inorder(struct btreenode *sr){ if(sr!=NULL) { inorder(sr->left); printf(“%d”,sr->data); inorder(sr->right); }}
Function code of Preorder :-
void preorder(struct btreenode *sr){ if(sr!=NULL) { printf(“%d”,sr->data); preorder(sr->left); preorder(sr->right); }}
Function code of Postorder :-
void postorder(struct btreenode *sr){ if(sr!=NULL) { postorder(sr->left); postorder(sr->right); printf(“%d”,sr->data); }}
Function code for Insertion of a node in binary search tree-
void insert(struct btreenode **sr,int num){ if(*sr==NULL) { *sr=malloc (sizeof(struct btreenode)) (*sr)->left=NULL; (*sr)->data=num; (*sr)->right=NULL; }
CASES FOR DELETION
• IF NODE HAS NO SPECIFIC DATA OR NO CHILD
• IF NODE HAS ONLY LEFT CHILD.
• IF NODE HAS ONLY RIGHT CHILD
• IF NODE HAS TWO CHILDREN
CASE 1
• IF NODE TO BE DELETED HAS NO CHILD
IF (( X->LEFT == NULL) && (X->RIGHT == NULL))
{• IF ( PARENT ->RIGHT == X)
• PARENT -> RIGHT = NULL;
• ELSE
• PARENT -> LEFT = NULL;
• FREE (X);
}
CASE 2
IF NODE TO BE DELETED HAS ONLY RIGHT CHILD
IF (( X-> LEFT==NULL) && (X-> RIGHT !=NULL))
{• IF (PARENT -> LEFT == X)
• PARENT ->LEFT = X-> RIGHT;
• ELSE
• PARENT ->RIGHT = X-> RIGHT;
• FREE (X);
}
CASE 3IF NODE HAS ONLY LEFT CHILD
IF((X->LEFT!=NULL)&&(X->RIGHT==NULL))
{
IF (PARENT->LEFT==X)
PARENT->LEFT=X->LEFT;
ELSE
PARENT->RIGHT->X->LEFT;
FREE(X);
}
CASE 4IF NODE TO BE DELETED HAS TWO CHILDREN
IF((X-> LEFT !=NULL) && (X-> RIGHT!=NULL))
{ PARENT = X;
XSUCC= X->RIGHT;
WHILE (XSUCC->LEFT!=NULL)
{
PARENT = XSUCC;
XSUCC =XSUCC-> LEFT;
}
X->DATA = XSUCC->DATA;
X=XSUCC }