0% found this document useful (0 votes)
243 views28 pages

Tree Data Structures: S. Sudarshan

This document discusses tree data structures. It begins by defining trees and different types of trees like binary trees. It then covers terminology used in trees like root, leaf, height. It describes properties of binary search trees and provides examples of searching, inserting and deleting nodes from binary search trees. The document also discusses balanced binary search trees, traversal of trees, parsing trees and representing data as trees like XML. Finally, it provides a brief introduction to graph data structures.

Uploaded by

Vikas Nagare
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
243 views28 pages

Tree Data Structures: S. Sudarshan

This document discusses tree data structures. It begins by defining trees and different types of trees like binary trees. It then covers terminology used in trees like root, leaf, height. It describes properties of binary search trees and provides examples of searching, inserting and deleting nodes from binary search trees. The document also discusses balanced binary search trees, traversal of trees, parsing trees and representing data as trees like XML. Finally, it provides a brief introduction to graph data structures.

Uploaded by

Vikas Nagare
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 28

Tree Data Structures

S. Sudarshan

Based partly on material from Fawzi Emad & Chau-Wen Tseng

Trees Data Structures

Tree

Nodes Each node can have 0 or more children A node can have at most one parent Tree with 02 children per node

Binary tree

Tree

Binary Tree

Trees

Terminology

Root no parent Leaf no child Interior non-leaf Height distance from root to leaf
Root node

Interior nodes
Leaf nodes

Height

Binary Search Trees

Key property

Value at node

Smaller values in left subtree Larger values in right subtree X>Y X<Z

Example

Binary Search Trees

Examples
5

10
2 5 2 25 30 45 5

10 45

30
45 10

2 25

25

30

Binary search trees

Not a binary search tree

Binary Tree Implementation


Class Node { int data; // Could be int, a class, etc Node *left, *right; // null if empty

void insert ( int data ) { } void delete ( int data ) { } Node *find ( int data ) { }
}

Iterative Search of Binary Tree


Node *Find( Node *n, int key) { while (n != NULL) { if (n->data == key) // Found it return n; if (n->data > key) // In left subtree n = n->left; else // In right subtree n = n->right; } return null; } Node * n = Find( root, 5);

Recursive Search of Binary Tree


Node *Find( Node *n, int key) { if (n == NULL) // Not found return( n ); else if (n->data == key) // Found it return( n ); else if (n->data > key) // In left subtree return Find( n->left, key ); else // In right subtree return Find( n->right, key ); } Node * n = Find( root, 5);

Example Binary Searches

Find ( root, 2 )

root 10 5 30

10 > 2, left
5 > 2, left 2 = 2, found

5 > 2, left

2
30 10 25

45

2 = 2, found

25

45

Example Binary Searches

Find (root, 25 )
10
5 30 25 45 10 10 < 25, right 30 > 25, left 25 = 25, found 2 5 45 5 < 25, right 45 > 25, left 30 > 25, left

30

10 < 25, right 25 = 25, found

25

Types of Binary Trees


Degenerate only one child Complete always two children Balanced mostly two children

more formal definitions exist, above are intuitive ideas

Degenerate binary tree

Balanced binary tree

Complete binary tree

Binary Trees Properties

Degenerate

Balanced

Height = O(n) for n nodes Similar to linked list

Height = O( log(n) ) for n nodes Useful for searches

Degenerate binary tree

Balanced binary tree

Binary Search Properties

Time of search

Proportional to height of tree Balanced binary tree

O( log(n) ) time O( n ) time Like searching linked list / unsorted array

Degenerate tree

Binary Search Tree Construction

How to build & maintain binary trees?

Insertion Deletion
Smaller values in left subtree Larger values in right subtree

Maintain key property (invariant)


Binary Search Tree Insertion

Algorithm
1.
2. 3.

4.

Perform search for value X Search will end at node Y (if X not in tree) If X < Y, insert new leaf X as new left subtree for Y If X > Y, insert new leaf X as new right subtree for Y
O( log(n) ) operation for balanced tree Insertions may unbalance tree

Observations

Example Insertion

Insert ( 20 )
10
5 2 25 30 45

10 < 20, right


30 > 20, left 25 > 20, left

Insert 20 on left

20

Binary Search Tree Deletion

Algorithm
1.
2. 3.

Perform search for value X If X is a leaf, delete X Else // must delete internal node
a) Replace with largest value Y on left subtree OR smallest value Z on right subtree b) Delete replacement value (Y or Z) from subtree

Observation

O( log(n) ) operation for balanced tree Deletions may unbalance tree

Example Deletion (Leaf)

Delete ( 25 )
10 5 30 25 45 10 < 25, right 30 > 25, left 5 2 10 30 45

25 = 25, delete
2

Example Deletion (Internal Node)

Delete ( 10 )
10 5 30 25 45 2 5 25 5 30 45 2 2 25 5 30 45

Replacing 10 with largest value in left subtree

Replacing 5 with largest value in left subtree

Deleting leaf

Example Deletion (Internal Node)

Delete ( 10 )
10 5 30 25 45 2 5 25 25 30 45 2 5 25 30 45

Replacing 10 with smallest value in right subtree

Deleting leaf

Resulting tree

Balanced Search Trees

Kinds of balanced binary search trees


height balanced vs. weight balanced Tree rotations used to maintain balance on insert/delete
2/3 trees

Non-binary search trees

each internal node has 2 or 3 children all leaves at same depth (height balanced)
Generalization of 2/3 trees Each internal node has between k/2 and k children

B-trees

Each node has an array of pointers to children

Widely used in databases

Other (Non-Search) Trees

Parse trees

Convert from textual representation to tree representation Textual program to tree

Used extensively in compilers E.g. HTML data can be represented as a tree

Tree representation of data

called DOM (Document Object Model) tree Like HTML, but used to represent data Tree structured

XML

Parse Trees

Expressions, programs, etc can be represented by tree structures


E.g. Arithmetic Expression Tree A-(C/5 * 2) + (D*5 % 4)


A / C 5 * 2

+
*

% 4

D 5

Tree Traversal

+
* * 2

% 4

Goal: visit every node of a tree in-order traversal

A / C 5

D 5

void Node::inOrder () { if (left != NULL) { cout << (; left->inOrder(); cout << ); } cout << data << endl; if (right != NULL) right->inOrder() } Output: A C / 5 * 2 + D * 5 % 4 To disambiguate: print brackets

Tree Traversal (contd.)

+ * * 2

% 4

pre-order and post-order:


void Node::preOrder () { cout << data << endl; if (left != NULL) left->preOrder (); if (right != NULL) right->preOrder (); }

A / C 5

D 5

Output: + - A * / C 5 2 % * D 5 4
void Node::postOrder () { if (left != NULL) left->preOrder (); if (right != NULL) right->preOrder (); cout << data << endl; } Output: A C 5 / 2 * - D 5 * 4 % +

XML

Data Representation

E.g. <dependency> <object>sample1.o</object> <depends>sample1.cpp</depends> <depends>sample1.h</depends> <rule>g++ -c sample1.cpp</rule> </dependency> Tree representation
dependency object sample1.o depends sample1.cpp depends sample1.h rule g++ -c

Graph Data Structures


E.g: Airline networks, road networks, electrical circuits Nodes and Edges E.g. representation: class Node

Stores name stores pointers to all adjacent nodes


i,e. edge == pointer To store multiple pointers: use array or linked list

Mumbai
Ahmbad Calcutta

Delhi Chennai

Madurai

End of Chapter

You might also like