Transcript Insertion
1.
2.
3.
4.
General Trees
Binary Search Trees
AVL Trees
Heap Trees
Insertion
◦ FIFO
◦ LIFO
◦ Key-sequenced Insertion
Deletion
Changing
a General Tree into a
Binary Tree
Given the parent Node a new node
may be inserted as
FIFO
First in-first out (FIFO) insertion
Data Structures: A Pseudocode Approach with C
5
Insertion
Given the parent Node a new node may be
inserted as
FIFO
LIFO
Last in-first out (LIFO) insertion
Data Structures: A Pseudocode Approach with C
7
Insertion
Given the parent Node a new node may be
inserted as
FIFO
LIFO
Key-sequenced Insertion
Key-sequenced insertion
Data Structures: A Pseudocode Approach with C
9
Insertion
◦ FIFO
◦ LIFO
◦ Key-sequenced Insertion
Deletion
Changing
a General Tree into a
Binary Tree
For
general trees nodes to be
deleted are restricted to be
“leaves”
Otherwise a node maybe
“purged”, i.e. a node is deleted
along with all its children
Insertion
◦ FIFO
◦ LIFO
◦ Key-sequenced Insertion
Deletion
Changing
a General Tree into a
Binary Tree
Changing
the meaning of the two
pointers:
Leftchild …..first child
Rightchild ….. Next siblings
Changing a General Tree to a
Binary Tree
Data Structures: A Pseudocode Approach with C
14
Changing a General Tree to a
Binary Tree
Data Structures: A Pseudocode Approach with C
15
Changing a General Tree to a
Binary Tree
Data Structures: A Pseudocode Approach with C
16
1.
2.
3.
4.
General Trees
Binary Search Trees
AVL Trees
Heap Trees
Basic
Concepts
BST Operations
Threaded Trees
All
items in left subtree < root
All items in right subtree > root
A binary search tree
Not a binary search tree
Two binary search trees representing
the same set:
Basic
Concepts
BST Operations
Threaded Trees
Traversal
Search
◦ Smallest ……….. ?
◦ Largest …………?
◦ Specific element
Insertion
Deletion
Print
out all the keys in sorted
order
Inorder: 2, 3, 4, 6, 7, 9, 13, 15, 17, 18, 20
Traversal
Search
◦ Smallest ……….. ?
◦ Largest …………?
◦ Specific element
Insertion
Deletion
Return the node containing the
smallest element in the tree
Start at the root and goes left/right as
long as there is a left/right child. The
stopping point is the smallest/largest
element
Time complexity = O(height of the
tree)
If we are searching for 15, then we
are done.
If we are searching for a key < 15,
then we should search in the left
subtree.
If we are searching for
a key > 15, then we
should search in the
right subtree.
Searching BST
Traversal
Search
◦ Smallest ……….. ?
◦ Largest …………?
◦ Specific element
Insertion
Deletion
Proceed down the tree as you would with a find
If X is found, do nothing (or update something)
Otherwise, insert X at the last spot on the path traversed
Time complexity = O(height of the tree)
Traversal
Search
◦ Smallest ……….. ?
◦ Largest …………?
◦ Specific element
Insertion
Deletion
When
we delete a node, we need
to consider how we take care of
the children of the deleted node.
This has to be done such that the
property of the search tree is
maintained.
Three cases:
(1) the node is a leaf
◦ Delete it immediately
(2) the node has one sub-tree (right or left)
◦ Adjust a pointer from the parent to bypass that node
(3) the node has 2 children
◦ replace the key of that node with the
minimum element at the right subtree
(or the maximum element at the left
subtree)
◦ delete the minimum element
Has either no child or only right child
because if it has a left child, that left
child would be smaller and would have
been chosen. So invoke case 1 or 2.
Time complexity = O(height of the tree)
Basic
Concepts
BST Operations
Threaded Trees
Sparing
recursion and stack
Making use of null right child of
leaves to point to next node
1.
2.
3.
4.
General Trees
Binary Search Trees
AVL Trees
Heap Trees
Properties
Operations
It
is a balanced binary tree
(definition of Russian
mathematicians Adelson-Velskii
and Landis)
The height of its sub-trees differs
by no more than one (its balance
factor is -1, 0, or 1), and its
subtrees are also balanced.
A
sub tree is called
Left high (LH) if its balance is 1
Equally high (EH) if it is 0
Right high (RH) if it is -1
Insertion
and deletion are same as
in BST
If unbalance occurs corresponding
rotations must be performed to
restore balance
Steps:
◦ Check if case is case 1 or 2 of the following and act
accordingly
◦ Case 1:
tree is left high &
out-of-balance is created by a adding node to the
left of the left sub-tree
◦ …… One right rotation is needed
Rotate out-of-balance node right
•Case 1 *
Tree is left balanced
unbalance is caused by node on the left of left sub-tree
h+2
h+1
h+1
h+1
h
h
h
h
h
◦ Case 2:
tree is left high
out-of-balance is created by a adding node
to the right of the left sub-tree
◦ …… Two rotations are needed:
Move from bottom of left sub-tree
upwards till an unbalanced node is found
and rotate it left
Rotate left sub-tree right
Add node to right of left balanced subtree
h+2
h+1
h+1h
h
h
h+2
h+2
h+1
h+1
h
First rotation .. Left rotation of unbalanced node c
Second rotation … Right rotation of left sub-tree g
h