CPCS204-14-Trees - BinarySearchTree - Implementation
CPCS204-14-Trees - BinarySearchTree - Implementation
CP
CS
20
4
CP
CS
20
4 Binary Search Tree
(BST)
Implementation
CP Class – BinarySearchTree
CS public class BinarySearchTree {
20 private intBSTnode root;
4 // Constructor
public BinarySearchTree() {
root = null;
}
CP
CS
20
4
Binary Search Tree
Operations
CP BST - Operations
CS
• Traversal
20 o Accessing/visiting all values of a tree once
4 • Searching
o Finding a key value
• Insertion
o Adding a value in a tree
• Deletion
o Removing a value from tree
• Creation
o Creating a tree from empty tree
6 Dr. Jonathan (Yahya) Cazalas Dr. Muhammad Umair Ramzan
Data Structures - I
“No Bonus” marks for this course anymore
CP BST - Traversal
CS
20
4 • Pre Order Traversal
• In Order Traversal
• Post Order Traversal
• Depth First Search
• Breadth First Search
CP
CS
20
4
Binary Search Tree
Searching
(Iterative Solution)
CP
CS
20
4
Binary Search Tree
Searching
(Recursive Solution)
}
return(false);
CS
if (data == p.data) {
return(true); root
20
}
else if (data < p.data) {
return(recurSearch(p.left, data));
}4
else {
return(recurSearch(p.right, data));
}
}
CP
CS
20
4
Binary Search Tree
Insertion
CP BST – Insertion
CS public intBSTnode insert(intBSTnode p, int data)
20 {
if (p == null) {
4 }
p = new intBSTnode(data);
else {
if (data < p.data) {
p.left = insert(p.left, data);
}
else {
p.right = insert(p.right, data);
}
}
return p;
}
16 Dr. Jonathan (Yahya) Cazalas Dr. Muhammad Umair Ramzan
Data Structures - I
“No Bonus” marks for this course anymore
else {
4 if (data < p.data) {
p.left = insert(p.left, data);
}
else {
p.right = insert(p.right, data);
}
}
return p;
}
CP
CS
20
4
Binary Search Tree
Deletion
CP BST – Deletion
CS
• Find node to be deleted
20
4 • Find Parent of node
• Check node is a “leaf”
• Has only Left Child
• Has only Right Child
• Find Smallest node
• Find Largest node
19 Dr. Jonathan (Yahya) Cazalas Dr. Muhammad Umair Ramzan
Data Structures - I
“No Bonus” marks for this course anymore
}
return findNode(root, data);
4
return null;
else {
if (data == p.getData())
return p;
else if (data <p.getData())
return findNode(p.getLeft(), data); 59
else
return findNode(p.getRight(), data);
}
}
18 67
13 32 63 72
10 15 25 43
10 15 25 43
59
18 67
13 32 63 72
10 15 25 43
59
18 67
13 32 63 72
10 15 25 43
4 }
59
18 67
13 32 63 72
10 15 25 43
13 32 63 72
10 15 25 43
18 67
13 32 63 72
10 15 25 43
if (hasOnlyLeftChild(node2delete)) {
CP BST – Deletion
if (parent == null)
return node2delete.getLeft();
CS if (data <parent.getData())
20 parent.setLeft(parent.getLeft().getLeft());
4 else
parent.setRight(parent.getRight().getLeft());
return p;
}
if (hasOnlyRightChild(node2delete)) {
if (parent == null)
return node2delete.getRight();
if (data <parent.getData())
parent.setLeft(parent.getLeft().getRight());
else
CP BST – Deletion
CS
newnode2delete = minNode(node2delete.getRight());
20 saveValue = newnode2delete.getData();
4 p = delete(p, saveValue);
node2delete.setData(saveValue);
return p;
}
CP
CS
20
4
Binary Search Tree
Practice Problems
4 if (B == null)
return null;
else if (B.right == null)
return B;
else
return largest(B.right);
}
CP
CS
20
4