Você está na página 1de 53

TREES

A tree is a non linear data structure which consists of nodes connected by edges. It is a finite set of one or more data items such that
There is a special data item called the root of the tree

And its remaining data items are partitioned into number of mutually exclusive subsets, each of which is itself a tree. And they are called subtrees

TREES
A B C Level 0

Level 1

Level 2

L Level 3

TREES
ROOT It is a specially designed data item in a tree. It is the first in the hierarchical arrangement of data items. Node at the top of the tree is called ROOT. In the above tree, A is the root item. There must be only one path from root to any other node of he tree. NODE Each data item in a tree is called a node. It specifies the data information and links to other data items Degree of a node It is the number of subtrees for a node in a given tree The degree of node A is 3 The degree of node D is 2

TREES

Degree of a tree It is the maximum degree of nodes in a given tree. So, the degree of the above tree is 3 Terminal nodes A node with degree zero is called a terminal node or a leaf Non terminal nodes Any node whose degree is not zero is called non terminal node Siblings The children nodes of a given parent node are called siblings. They are also called brothers. H & I are siblings of node D

TREES

Path
It is a sequence of consecutive edges from the source node to the destination node. In the above tree, the path between A & J is given by (AD), (DI) and (IJ)

Depth It is the maximum level of any node in a given tree. This equals the length of the longest path from the root to any leaf

TREES

Visiting A node is said to be visited when program control arrives at the node for performing some operations. Traversing To visit all nodes in some specified order . Level Level refers to the number of generations from the root.

TREES

Binary Trees A binary tree is a finite set of elements that is either empty or 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 and right subtrees of the original tree. A left or right subtree can be empty In a binary tree the maximum degree of any node is at most two

BINARY TREES
A C

BINARY TREES

If A is the root of a binary tree and B is the root of its left or right subtree, then A is said to be the father of B, and B is said to be the left or right son of A
Node n1 is an ancestor of node n2 if n1 is either the father of n2 or the father of some ancestor of n2 Node n2 is a left descendant of node n1 if n2 is either the left son of n1 or a descendant of the left son of n1

BINARY SEARCH TREE

Binary Search Tree(BST):A binary search tree is a binary tree where all the elements in the left subtree of a node n are less than the contents of n, and all the elements in the right subtree of n are greater than or equal to the contents of n.

BINARY SEARCH TREES


30 40

23

10

29

33

45

BINARY TREE
Binary tree representation

Array Representation of binary trees An array can be used to store the nodes of a binary tree
A C A B C D

E
F D E F G

BINARY TREE

Linked list representation of binary tree Each node consist of three fields such as Data, A Left child, Right child

null

null

null

null

null

null

null

null

BINARY TREES
Operations on Binary Trees

Tree Traversal Insertion of nodes Deletion of nodes Searching for the node

BINARY TREES
Traversal of a Binary Tree

Preorder Traversal
Inorder Traversal Postorder Traversal

BINARY TREES
Traversal of a Binary Tree
Preorder Traversal: The preorder traversal of a non empty binary tree is defined as follows

Visit the root node (D) Traverse the left subtree in preorder (L) Traverse the right subtree in preorder (R)

BINARY TREES
Traversal of a Binary Tree
Inorder Traversal: The Inorder traversal of a non empty binary tree is defined as follows

Traverse the left subtree in Inorder (L) Visit the root node (D) Traverse the right subtree in Inorder (R)

BINARY TREES
Traversal of a Binary Tree
Postorder Traversal: The Postorder traversal of a non empty binary tree is defined as follows

Traverse the left subtree in Postorder (L) Traverse the right subtree in Postorder (R) Visit the root node (D)

BINARY TREES
A

BINARY TREES
Preorder Traversal --> ABDGCEHIF

Inorder Traversal -->DGBAHEICF

Postorder Traversal -->GDBHIEFCA

BINARY TREES
class node
{ int data;

node left,right;
node(int val)

{ data = val;
left=null; right=null; }

BINARY TREES
Void preorder(node tree)
{ if (tree!=null)

{
output(tree.data);

preorder(tree.left);
preorder(tree.right); }}

BINARY TREES
Void inorder(node tree)
{ if (tree!=null)

{
inorder(tree.left);

output(tree.data);
inorder(tree.right); }}

BINARY TREES
Void postorder(node tree)
{ if (tree!=null)

{
postorder(tree.left);

postorder(tree.right);
output(tree.data); }}

THREADED BINARY TREES

The null pointers are replaced by threads


In the memory representation we must be able to distinguish between threads and normal pointers.

THREADED BINARY TREES

This is done by adding two boolean fields to the record, left thread and right thread A right in-threaded binary tree is one in which each null right pointer is altered to contain a thread to that nodes inorder successor

THREADED BINARY TREES

A left in-threaded binary tree is one in which each null left pointer is altered to contain a thread to that nodes inorder predecessor An in-threaded binary tree is one in which each null right and left pointer is altered to contain a thread to that nodes inorder successor and inorder predecessor respectively

THREADED BINARY TREES

Left thread

Left child

data

Right child

Right thread

If right thread/left thread is true then right child/left child is a thread not actual pointer

HEIGHT BALANCED BINARY TREES


Let us consider the following data
30 27 22 18 9 5

Build a binary search tree

HEIGHT BALANCED BINARY TREES


Let us consider the following data
30 27 22 18 9
30 27 22 18 9

5
Left skewed binary tree

HEIGHT BALANCED BINARY TREES

The balance factor of a binary tree


Balance factor= Height of the left subtree(hL) Height of the right subtree(hR)

A binary search tree is said to be height balanced binary search tree if all its nodes have a balance factor of 1, 0, or -1

|Balance factor| = | hL-hR | <=1, for every node in the tree

HEIGHT BALANCED BINARY TREES


To balance an unbalance tree due to insertion of a node the steps are Insert node into a binary search tree Compute the balance factors Decide the pivot node The node whose absolute value of balance factor is switched from 1 to 2, mark it as a special node called pivot node. There may be more than one node whose balance factor is switched from 1 to 2 but the nearest node to newly inserted node will be the pivot node Balance the unbalance tree using AVL rotation

HEIGHT BALANCED BINARY TREES


AVL Rotations

In 1962 two Russian mathematicians G M Adelson-Velski and E M Lendis

So AVL rotation

AVL ROTATIONS
CASE I Unbalance occurred due to the insertion in the left subtree of the left child of the pivot node
The steps are Right subtree(A ) of the left child (A) of the R pivot node (P) becomes the left subtree of P P becomes the right child of A Left subtree (A ) of A remains the same L This is left-to-left insertions(LL Rotation)

AVL ROTATIONS
P A PR AL After rotation A P

AL

AR AR PR

AVL ROTATIONS
CASE II Unbalance occurred due to the insertion in the right subtree of the right child of the pivot node
The steps are Left subtree(B ) of the right child (B) of the L pivot node (P) becomes the right subtree of P P becomes the left child of B Right subtree (B ) of B remains the same R This is Right-to-Right insertions(RR Rotation)

AVL ROTATIONS
P After rotation B

B
PR

P BR

BL

BR

PL

BL

AVL ROTATIONS
CASE III Unbalance occurred due to the insertion in the right subtree of the left child of the pivot node This involves two rotations Rotation I Left subtree(B ) of the right child (B) of the L left child of the pivot node (P) becomes the right subtree of the left child (A) Left child (A) of the pivot node (P) becomes the left child of B

AVL ROTATIONS
Rotation 2

Right subtree(BR) of the right child (B) of the left child A of the pivot node (P) becomes the left subtree of P
P becomes the right child of B

This is left-to-Right insertion

AVL ROTATIONS
P A 1 AL B 2 PR P

After Ist rotation A

B PR BR

BL

BR

AL

BL

AVL ROTATIONS
B

AL

BL

BR

PR

After 2nd rotation

AVL ROTATIONS
CASE IV Unbalance occurred due to the insertion in the left subtree of the right child of the pivot node This involves two rotations Rotation I Right subtree(B ) of the left child (B) of the R right child (A) of the pivot node (P) becomes the left subtree of(A) Right child (A) of the pivot node (P) becomes the right child of B

AVL ROTATIONS
Rotation 2

Left subtree(BL) of the right child (B) of the right child A of the pivot node (P) becomes the right subtree of P
P becomes the left child of B

This is right-to-left insertion

AVL ROTATIONS
P

P
A 1 2 After Ist rotation AR PL B

2
PL

BL

BL

BR

BR

AR

AVL ROTATIONS
B A After 2nd rotation

PL

BL

BR

AR

B-Trees

m way search tree An m-way search tree T is a tree in which all nodes are of degree <=m Each node in the tree contains the following attributes P K P K P ...................... K P
0 1 1 2 2 n n

where 1<=n<=m, Ki (1<=i<=n) are key values in the node Pi (0<=i<=n) are pointers to the subtrees of T

B-Trees

Ki<Ki+1, 1<=i<=n

All the key values in the subtree pointed by Pi are less than the key values Ki+1, 0<=i<=n

All the key values in the subtree pointed by Pn is greater than Kn

B-Trees
A B-Tree T of order m is an m-way search tree that is either empty, or it satisfies the following properties

The root node is either a leaf or has at least two children

B-Trees

A failure node represents a node which can be reached during a search only if the value, say X, being searched for is not in the tree

These empty subtrees are replaced by hypothetical nodes called failure nodes

B-Trees
21 B-Tree of order 4 48 72

12

15

17

25

31

41

50

55

64

75

87

B+-Trees

One of the major drawbacks of the B-Tree is the difficulty of traversing the keys sequentially.

In B+-trees the leafs are linked together to provide a sequential path for traversing the keys in the tree.

B+-Trees
21 48 72

12

15

17

25

31

41

50

55

64

75

87

Você também pode gostar