Sunteți pe pagina 1din 14

DATA

STRUCTURES

MAHESH GOYANI
MAHATMA GANDHI INSTITUE OF TECHNICAL EDUCATION & RESEARCH CENTER
mgoyani@rediffmail.com

(C) GOYANI MAHESH 1


BINARY TREE

(C) GOYANI MAHESH 2


CREATE TREE

Create_Tree (DATA, ROOT)

1. [Check weather tree is empty or not]


if (ROOT = NULL)
a). Create NewNode
b). ROOT = NewNode
c). ROOT -> DATA = DATA
d). ROOT -> LChild = NULL
e). ROOT -> RChild =NULL

2. [Test for the left child]


If (ROOT -> DATA >= DATA)
ROOT->LChild = Create_Tree (DATA, ROOT->LChild)
else
ROOT->RChild = Create_Tree (DATA, ROOT -> RChild)

3. Return ROOT
(C) GOYANI MAHESH 3
DISPLAY TREE

Display_Tree (ROOT, level + 1)

if (ROOT != NULL)
Display_Tree (ROOT->RChild, level + 1)
// Adjust Space
“ROOT->DATA”
// Adjust Space
Display_Tree (ROOT -> LCHILD, level + 1)

(C) GOYANI MAHESH 4


INORDER

void inorder (struct node *ROOT)


{
if (ROOT != NULL)
{
inorder (ROOT -> LChild);
printf (“ %d ”, ROOT -> DATA);
inorder (ROOT -> RChild);
}
}

(C) GOYANI MAHESH 5


PREORDER

void preorder (struct node *ROOT)


{
if (ROOT != NULL)
{
printf (“ %d ”, ROOT -> DATA);
preorder (ROOT -> LChild);
preorder (ROOT -> RChild);
}
}

(C) GOYANI MAHESH 6


POSTORDER

void postorder (struct node *ROOT)


{
if (ROOT != NULL)
{
postorder (ROOT -> LChild);
postorder (ROOT -> RChild);
printf ( “%d”, ROOT -> DATA);
}
}

(C) GOYANI MAHESH 7


BINARY
SEARCH TREE

(C) GOYANI MAHESH 8


INSERT NODE 1. Input DATA & ROOT
2. Create NewNode
3. If (ROOT == NULL)
a). ROOT = NewNode
b). NewNode -> DATA = DATA
c). NewNode -> RChild = NULL
d). NewNode -> LChild = NULL
e). Go To Step 7.
4. Else if (DATA < ROOT -> DATA)
a). ROOT = ROOT -> LChild
b). Go To step 3.
5. Else if (DATA > ROOT -> DATA)
a). ROOT = ROOT -> RChild
b). Go To step 2.
6. Else
“Duplicate Node”
7. Exit
(C) GOYANI MAHESH 9
SEARCH NODE 1. Input DATA to Search
2. If (ROOT == NULL)
“DATA not Found”

3. If (ROOT -> DATA = DATA)


a). “Data Found”
b). Go To Step 6.

4. if (DATA < ROOT -> DATA)


a). ROOT = ROOT -> LChild
b). Go To step 2.

5. if (DATA > ROOT -> DATA)


a). ROOT = ROOT -> RChild
b). Go To step 2.

6. Exit
(C) GOYANI MAHESH 10
DELETE NODE
1. Find the location NODE of the DATA to be deleted
2. If (NODE == NULL)
“DATA not found”
3. If (NODE ->LChild == NULL)
a). LOC = NODE
b). NODE = NODE -> RChild
4. If (NODE -> RChild == NULL)
a) . LOC = NODE
b). NODE = NODE -> LChild
5. If (NODE -> LChild != NULL && NODE -> RChild != NULL)
LOC = NODE -> RChild
6. While( LOC -> LChild != NULL)
LOC = LOC -> LChild
7. LOC -> LChild = NODE -> LChild
8. LOC -> RChild = NODE -> RChild
9. Exit.

(C) GOYANI MAHESH 11


DELETE NODE NODE does not have both the Child

Delete (NODE , Parent, ROOT, TEMP)

1. [Initialization]
2. If (NODE -> LChild == NULL)
TEMP = NODE -> RChild
Else
TEMP = NODE -> LChild
3. If (Parent != NULL)
if (NODE -> DATA > Parent -> DATA )
Parent -> LChild = TEMP
else
Parent -> RChild = TEMP
4. Else
ROOT = TEMP
5. Exit

(C) GOYANI MAHESH 12


COMPLETE
BINARY TREE

(C) GOYANI MAHESH 13


Create Tree
1. [Find Middle of List]
i. Mid = (Lower + Upper) /2
ii. ROOT -> DATA = LIST [Mid]
2. If (Lower >= Upper)
i. ROOT -> LChild = NULL
ii. ROOT -> RChild = NULL
iii. Return ROOT
3. If (Lower <= Mid -1)
ROOT -> LChild = CB_Tree (List, Lower, Mid -1)
Else
ROOT -> LChild = NULL
4. If (Upper >= Mid +1)
ROOT -> RChild = CB_Tree (List, Mid+1, Upper)
Else
ROOT -> RChild = NULL
5. Return ROOT

(C) GOYANI MAHESH 14

S-ar putea să vă placă și