Data Structures and Algorithms Session 13 Ver. 1.0 Objectives In this session, you will learn to: Store data in a tree Implement a binary tree Implement.

Slides:



Advertisements
Similar presentations
Binary Trees CSC 220. Your Observations (so far data structures) Array –Unordered Add, delete, search –Ordered Linked List –??
Advertisements

CS 171: Introduction to Computer Science II
Data Structures and Algorithms Session 16 Ver. 1.0 Objectives In this session, you will learn to: Implement a threaded binary tree Implement a height balanced.
Trees Chapter 8.
Fall 2007CS 2251 Trees Chapter 8. Fall 2007CS 2252 Chapter Objectives To learn how to use a tree to represent a hierarchical organization of information.
Trees Chapter 8. Chapter 8: Trees2 Chapter Objectives To learn how to use a tree to represent a hierarchical organization of information To learn how.
Lists A list is a finite, ordered sequence of data items. Two Implementations –Arrays –Linked Lists.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved L12 (Chapter 20) Lists, Stacks,
© 2006 Pearson Addison-Wesley. All rights reserved11 A-1 Chapter 11 Trees.
Starting Out with C++: Early Objects 5/e © 2006 Pearson Education. All Rights Reserved Starting Out with C++: Early Objects 5 th Edition Chapter 19 Binary.
Copyright © 2008 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Starting Out with C++ Early Objects Sixth Edition Chapter 19: Binary Trees.
More Trees COL 106 Amit Kumar and Shweta Agrawal Most slides courtesy : Douglas Wilhelm Harder, MMath, UWaterloo
Binary Trees Chapter 6.
Data Structures Arrays both single and multiple dimensions Stacks Queues Trees Linked Lists.
Trees Chapter 8. 2 Tree Terminology A tree consists of a collection of elements or nodes, organized hierarchically. The node at the top of a tree is called.
CHAPTER 71 TREE. Binary Tree A binary tree T is a finite set of one or more nodes such that: (a) T is empty or (b) There is a specially designated node.
Trees. Tree Terminology Chapter 8: Trees 2 A tree consists of a collection of elements or nodes, with each node linked to its successors The node at the.
Tree.
Review Binary Tree Binary Tree Representation Array Representation Link List Representation Operations on Binary Trees Traversing Binary Trees Pre-Order.
Chapter 19: Binary Trees. Objectives In this chapter, you will: – Learn about binary trees – Explore various binary tree traversal algorithms – Organize.
CS Data Structures Chapter 5 Trees. Chapter 5 Trees: Outline  Introduction  Representation Of Trees  Binary Trees  Binary Tree Traversals 
Trees EENG212 Algorithms and Data Structures. Trees Outline  Introduction to Trees  Binary Trees: Basic Definitions  Traversing Binary Trees  Node.
Lecture 10 Trees –Definiton of trees –Uses of trees –Operations on a tree.
Binary Trees Chapter Definition And Application Of Binary Trees Binary tree: a nonlinear linked list in which each node may point to 0, 1, or two.
Trees Chapter 8. Chapter 8: Trees2 Chapter Objectives To learn how to use a tree to represent a hierarchical organization of information To learn how.
Spring 2010CS 2251 Trees Chapter 6. Spring 2010CS 2252 Chapter Objectives Learn to use a tree to represent a hierarchical organization of information.
1 Trees A tree is a data structure used to represent different kinds of data and help solve a number of algorithmic problems Game trees (i.e., chess ),
Chapter 6 Binary Trees. 6.1 Trees, Binary Trees, and Binary Search Trees Linked lists usually are more flexible than arrays, but it is difficult to use.
Binary Trees. 2 Parts of a binary tree A binary tree is composed of zero or more nodes In Java, a reference to a binary tree may be null Each node contains:
Data Structures and Algorithm Analysis Trees Lecturer: Jing Liu Homepage:
Trees Chapter 8. 2 Tree Terminology A tree consists of a collection of elements or nodes, organized hierarchically. The node at the top of a tree is called.
Prof. Amr Goneid, AUC1 CSCE 210 Data Structures and Algorithms Prof. Amr Goneid AUC Part 4. Trees.
Topics Definition and Application of Binary Trees Binary Search Tree Operations.
Review 1 Queue Operations on Queues A Dequeue Operation An Enqueue Operation Array Implementation Link list Implementation Examples.
Advance Data Structure 1 College Of Mathematic & Computer Sciences 1 Computer Sciences Department م. م علي عبد الكريم حبيب.
Tree Traversals, TreeSort 20 February Expression Tree Leaves are operands Interior nodes are operators A binary tree to represent (A - B) + C.
Lecture - 10 on Data Structures. 6:05:57 PM Prepared by, Jesmin Akhter, Lecturer, IIT,JU.
Introduction to Trees IT12112 Lecture 05 Introduction Tree is one of the most important non-linear data structures in computing. It allows us to implement.
1 Chapter 7 Objectives Upon completion you will be able to: Create and implement binary search trees Understand the operation of the binary search tree.
M180: Data Structures & Algorithms in Java Trees & Binary Trees Arab Open University 1.
DATA STRUCTURE BS(IT)3rd. Tree An Introduction By Yasir Mustafa Roll No. BS(IT) Bahauddin Zakariya University, Multan.
Trees Chapter 10. CS 308 2Chapter Trees Preview: Preview: The data organizations presented in previous chapters are linear, in that items are one.
Copyright © 2012 Pearson Education, Inc. Chapter 20: Binary Trees.
Binary Search Trees.  Understand tree terminology  Understand and implement tree traversals  Define the binary search tree property  Implement binary.
Binary Trees. 2 Parts of a binary tree A binary tree is composed of zero or more nodes In Java, a reference to a binary tree may be null Each node contains:
Binary Tree Implementation. Binary Search Trees (BST) Nodes in Left subtree has smaller values Nodes in right subtree has bigger values.
Binary Tree.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 20: Binary Trees.
CMSC 202, Version 5/02 1 Trees. CMSC 202, Version 5/02 2 Tree Basics 1.A tree is a set of nodes. 2.A tree may be empty (i.e., contain no nodes). 3.If.
Foundation of Computing Systems Lecture 4 Trees: Part I.
BINARY TREES Objectives Define trees as data structures Define the terms associated with trees Discuss tree traversal algorithms Discuss a binary.
Trees CSIT 402 Data Structures II 1. 2 Why Do We Need Trees? Lists, Stacks, and Queues are linear relationships Information often contains hierarchical.
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 20: Binary Trees.
1 Trees. 2 Trees Trees. Binary Trees Tree Traversal.
What is a Tree? Formally, we define a tree T as a set of nodes storing elements such that the nodes have a parent-child relationship, that satisfies the.
Topic 2: binary Trees COMP2003J: Data Structures and Algorithms 2
Trees Chapter 15.
Recursive Objects (Part 4)
Trees ---- Soujanya.
Binary Search Tree (BST)
Lecture 22 Binary Search Trees Chapter 10 of textbook
Section 8.1 Trees.
Tonga Institute of Higher Education
Chapter 20: Binary Trees.
Chapter 21: Binary Trees.
Trees and Binary Trees.
Trees.
Chapter 20: Binary Trees.
Data Structures Using C++ 2E
Chapter 11 Trees © 2011 Pearson Addison-Wesley. All rights reserved.
Presentation transcript:

Data Structures and Algorithms Session 13 Ver. 1.0 Objectives In this session, you will learn to: Store data in a tree Implement a binary tree Implement a binary search tree

Data Structures and Algorithms Session 13 Ver. 1.0 Storing Data in a Tree Consider a scenario where you are required to represent the directory structure of your operating system. The directory structure contains various folders and files. A folder may further contain any number of sub folders and files. In such a case, it is not possible to represent the structure linearly because all the items have a hierarchical relationship among themselves. In such a case, it would be good if you have a data structure that enables you to store your data in a nonlinear fashion. Directory structure

Data Structures and Algorithms Session 13 Ver. 1.0 A tree is a nonlinear data structure that represent a hierarchical relationship among the various data elements. A B CD IJ H K G LM F E Defining Trees Trees are used in applications in which the relation between data elements needs to be represented in a hierarchy.

Data Structures and Algorithms Session 13 Ver. 1.0 Each element in a tree is referred to as a node.The topmost node in a tree is called root. root Defining Trees (Contd.) node A B CD IJ H K G LM F E

Data Structures and Algorithms Session 13 Ver. 1.0 Each node in a tree can further have subtrees below its hierarchy. root Defining Trees (Contd.) node A B CD IJ H K G LM F E

Data Structures and Algorithms Session 13 Ver. 1.0 Tree Terminology Leaf node: It refers to a node with no children. Nodes E, F, G, H, I, J, L, and M are leaf nodes. A B CD IJ H K G LM F E Let us discuss various terms that are most frequently used with trees.

Data Structures and Algorithms Session 13 Ver. 1.0 Subtree: A portion of a tree, which can be viewed as a separate tree in itself is called a subtree. A subtree can also contain just one node called the leaf node. Children of a node: The roots of the subtrees of a node are called the children of the node. Tree Terminology (Contd.) Tree with root B, containing nodes E, F, G, and H is a subtree of node A. E, F, G, and H are children of node B. B is the parent of these nodes. A B CD IJ H K G LM F E

Data Structures and Algorithms Session 13 Ver. 1.0 Degree of a node: It refers to the number of subtrees of a node in a tree. Tree Terminology (Contd.) Degree of node C is 1 Degree of node D is 2 Degree of node A is 3 Degree of node B is 4 A B CD IJ H K G LM F E Edge: A link from the parent to a child node is referred to as an edge. Edge

Data Structures and Algorithms Session 13 Ver. 1.0 Nodes B, C, and D are siblings of each other. Nodes E, F, G, and H are siblings of each other. Siblings/Brothers: It refers to the children of the same node. Tree Terminology (Contd.) A B CD IJ H K G LM F E

Data Structures and Algorithms Session 13 Ver. 1.0 Level of a node: It refers to the distance (in number of nodes) of a node from the root. Root always lies at level 0. As you move down the tree, the level increases by one. Tree Terminology (Contd.) Internal node: It refers to any node between the root and a leaf node. Nodes B, C, D, and K are internal nodes. Level 0 Level 1 Level 2 Level 3 A B CD IJ H K G LM F E

Data Structures and Algorithms Session 13 Ver. 1.0 Tree Terminology (Contd.) Depth of a tree: Refers to the total number of levels in the tree. The depth of the following tree is 4. Level 0 Level 1 Level 2 Level 3 A B CD IJ H K G LM F E

Data Structures and Algorithms Session 13 Ver. 1.0 Consider the following tree and answer the questions that follow: a.What is the depth of the tree? b.Which nodes are children of node B? c.Which node is the parent of node F? d.What is the level of node E? e.Which nodes are the siblings of node H? f.Which nodes are the siblings of node D? g.Which nodes are leaf nodes? Just a minute A B FG C ED HI root

Data Structures and Algorithms Session 13 Ver. 1.0 Just a minute Answer: a.4 b.D and E c.C d.2 e.H does not have any siblings f.The only sibling of D is E g.F, G, H, and I

Data Structures and Algorithms Session 13 Ver. 1.0 Strictly binary tree: A binary tree in which every node, except for the leaf nodes, has non-empty left and right children. Defining Binary Trees Binary tree is a specific type of tree in which each node can have at most two children namely left child and right child. There are various types of binary trees: Strictly binary tree Full binary tree Complete binary tree

Data Structures and Algorithms Session 13 Ver. 1.0 Full binary tree: A binary tree of depth d that contains exactly 2 d – 1 nodes. A BC DEFG Depth = 3 Total number of nodes = 2 3 – 1 = 7 Defining Binary Trees (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 Complete binary tree: A binary tree with n nodes and depth d whose nodes correspond to the nodes numbered from 0 to n − 1 in the full binary tree of depth k. A BC DEF Complete Binary Tree A BC DEG Incomplete Binary Tree Defining Binary Trees (Contd.) A BC DEF Full Binary Tree G

Data Structures and Algorithms Session 13 Ver. 1.0 Representing a Binary Tree Array representation of binary trees: All the nodes are represented as the elements of an array. A BC DEFG A B C D E G F [0] [1] [2] [3] [4] [5] [6] Binary Tree Array Representation If there are n nodes in a binary tree, then for any node with index i, where 0 < i < n – 1: Parent of i is at (i – 1)/2. Left child of i is at 2i + 1: If 2i + 1 > n – 1, then the node does not have a left child. Right child of i is at 2i + 2: If 2i + 2 > n – 1, then the node does have a right child.

Data Structures and Algorithms Session 13 Ver. 1.0 Linked representation of a binary tree: It uses a linked list to implement a binary tree. Each node in the linked representation holds the following information: Data Reference to the left child Reference to the right child If a node does not have a left child or a right child or both, the respective left or right child fields of that node point to NULL. Data Node Representing a Binary Tree (Contd.)

Data Structures and Algorithms Session 13 Ver Binary TreeLinked Representation root Representing a Binary Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 You can implement various operations on a binary tree. A common operation on a binary tree is traversal. Traversal refers to the process of visiting all the nodes of a binary tree once. There are three ways for traversing a binary tree: Inorder traversal Preorder traversal Postorder traversal Traversing a Binary Tree

Data Structures and Algorithms Session 13 Ver. 1.0 Steps for traversing a tree in inorder sequence are as follows: 1. Traverse the left subtree 2. Visit root 3. Traverse the right subtree Let us consider an example. Inorder Traversal

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) A C E B FGD H I root The left subtree of node B is not NULL. Therefore, move to node D to traverse the left subtree of B. The left subtree of node A is not NULL. Therefore, move to node B to traverse the left subtree of A.

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) The left subtree of node D is NULL. Therefore, visit node D. D A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Right subtree of D is not NULL Therefore, move to the right subtree of node D D A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Left subtree of H is empty. Therefore, visit node H. D H A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Right subtree of H is empty. Therefore, move to node B. DH A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) The left subtree of B has been visited. Therefore, visit node B. DHB A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Right subtree of B is not empty. Therefore, move to the right subtree of B. DHB A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Left subtree of E is empty. Therefore, visit node E. DHEB A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Right subtree of E is empty. Therefore, move to node A. DHEB A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Left subtree of A has been visited. Therefore, visit node A. DHEBA A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Right subtree of A is not empty. Therefore, move to the right subtree of A. DHEBA A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Left subtree of C is not empty. Therefore, move to the left subtree of C. DHEBA A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Left subtree of F is empty. Therefore, visit node F. DHEBAF A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Right subtree of F is empty. Therefore, move to node C. DHEBAF A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) The left subtree of node C has been visited. Therefore, visit node C. DHEBAFC A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Right subtree of C is not empty. Therefore, move to the right subtree of node C. DHEBAFC A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Left subtree of G is not empty. Therefore, move to the left subtree of node G. DHEBAFC A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Left subtree of I is empty. Therefore, visit I. DHEBAFCI A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Right subtree of I is empty. Therefore, move to node G. DHEBAFCI A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Visit node G. DHEBAFCIG A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder Traversal (Contd.) Right subtree of G is empty. DHEBAFCIG Traversal complete A C E B FGD H I root

Data Structures and Algorithms Session 13 Ver. 1.0 Preorder Traversal Steps for traversing a tree in preorder sequence are as follows: 1. Visit root 2. Traverse the left subtree 3. Traverse the right subtree

Data Structures and Algorithms Session 13 Ver. 1.0 Preorder Traversal (Contd.) A C E B FGD H I Perform the preorder traversal of the following tree. ABDHECFGIPreorder Traversal:

Data Structures and Algorithms Session 13 Ver. 1.0 Postorder Traversal Steps for traversing a tree in postorder sequence are as follows: 1. Traverse the left subtree 2. Traverse the right subtree 3. Visit the root

Data Structures and Algorithms Session 13 Ver. 1.0 Postorder Traversal (Contd.) A C E B FGD H I Perform the postorder traversal of the following tree. HDEBFIGCAPostorder Traversal:

Data Structures and Algorithms Session 13 Ver. 1.0 In _________ traversal method, root is processed before traversing the left and right subtrees. Just a minute Answer: Preorder

Data Structures and Algorithms Session 13 Ver. 1.0 Implementing a Binary Search Tree Consider a scenario. SysCall Ltd. is a cellular phone company with millions of customers spread across the world. Each customer is assigned a unique identification number (id). Individual customer records can be accessed by referring to the respective id. These ids need to be stored in a sorted manner in such a way so that you can perform various transactions, such as retrieval, insertion, and deletion, easily.

Data Structures and Algorithms Session 13 Ver. 1.0 Which data structure will you use to store the id of the customers? Can you implement an array? Search operation in an array is fast. However, insertion and deletion in an array is complex in nature. In this case, the total number of customer ids to be stored is very large. Therefore, insertion and deletion will be very time consuming. Can you implement a linked list? Insert and delete operation in a linked is fast. However, linked lists allow only sequential search. If you need to access a particular customer id, which is located near the end of the list, then it would require you to visit all the preceding nodes, which again can be very time consuming. Therefore, you need to implement a data structure that provides the advantages of both arrays as well as linked lists. A binary search tree combines the advantages of both arrays and linked lists. Implementing a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 Binary search tree is a binary tree in which every node satisfies the following conditions: All values in the left subtree of a node are less than the value of the node. All values in the right subtree of a node are greater than the value of the node. The following is an example of a binary search tree Defining a Binary Search Tree

Data Structures and Algorithms Session 13 Ver. 1.0 You can implement various operations on a binary search tree: Traversal Search Insert Delete Defining a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 Searching a Node in a Binary Search Tree Search operation refers to the process of searching for a specified value in the tree. To search for a specific value, you need to perform the following steps: 1.Make currentNode point to the root node 2.If currentNode is null: a.Display “Not Found” b.Exit 3.Compare the value to be searched with the value of currentNode. Depending on the result of the comparison, there can be three possibilities: a.If the value is equal to the value of currentNode: i. Display “Found” ii. Exit b.If the value is less than the value of currentNode: i. Make currentNode point to its left child ii. Go to step 2 c.If the value is greater than the value of currentNode: i. Make currentNode point to its right child ii. Go to step 2

Data Structures and Algorithms Session 13 Ver. 1.0 In a binary search tree, all the values in the left subtree of a node are _______ than the value of the node. Just a minute Answer: smaller

Data Structures and Algorithms Session 13 Ver. 1.0 Inserting Nodes in a Binary Search Tree Before inserting a node in a binary search tree, you first need to check whether the tree is empty or not. If the tree is empty, make the new node as root. If the tree is not empty, you need to locate the appropriate position for the new node to be inserted. This requires you to locate the parent of the new node to be inserted. Once the parent is located, the new node is inserted as the left child or right child of the parent. To locate the parent of the new node to be inserted, you need to implement a search operation in the tree. Write an algorithm to locate the position of a new node to be inserted in a binary search tree.

Data Structures and Algorithms Session 13 Ver. 1.0 Algorithm to locate the parent of the new node to be inserted. 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root Inserting Nodes in a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 Refer to the algorithm to locate the parent of the new node to be inserted root Locate the position of a new node Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child Inserting Nodes in a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver root currentNode 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent = NULL Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root

Data Structures and Algorithms Session 13 Ver. 1.0 parent = NULL Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root currentNode

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent = NULLparent Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent 55 > 52 Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root 55 > 52

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root currentNode 55 > 52

Data Structures and Algorithms Session 13 Ver. 1.0 parent Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root currentNode

Data Structures and Algorithms Session 13 Ver. 1.0 parent Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root currentNode parent

Data Structures and Algorithms Session 13 Ver < 68 Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root currentNode parent

Data Structures and Algorithms Session 13 Ver. 1.0 Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root currentNode parent currentNode 55 < 68

Data Structures and Algorithms Session 13 Ver. 1.0 Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root parent currentNode

Data Structures and Algorithms Session 13 Ver. 1.0 Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root parent currentNode parent

Data Structures and Algorithms Session 13 Ver < 59 Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root currentNode parent

Data Structures and Algorithms Session 13 Ver. 1.0 Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root currentNode parent currentNode = NULL 55 < 59

Data Structures and Algorithms Session 13 Ver. 1.0 Locate the position of a new node 55. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root parent currentNode = NULL

Data Structures and Algorithms Session 13 Ver. 1.0 Once the parent of the new node is located, you can insert the node as the child of its parent. Inserting Nodes in a Binary Search Tree (Contd.) 1.Mark the root node as currentNode 2.Make parent point to NULL 3.Repeat steps 4, 5, and 6 until currentNode becomes NULL 4.Make parent point to currentNode 5.If the value of the new node is less than that of currentNode: a.Make currentNode point to its left child 6.If the value of the new node is greater than that of currentNode: a.Make currentNode point to its right child root parent currentNode = NULL.

Data Structures and Algorithms Session 13 Ver. 1.0 Write an algorithm to insert a node in a binary search tree. Inserting Nodes in a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 Inserting Nodes in a Binary Search Tree (Contd.) Algorithm to insert a node in a binary search tree. 1.Allocate memory for the new node. 2.Assign value to the data field of new node. 3.Make the left and right child of the new node point to NULL. 4.Locate the node which will be the parent of the node to be inserted. Mark it as parent. 5.If parent is NULL (Tree is empty): a.Mark the new node as ROOT b.Exit 6.If the value in the data field of new node is less than that of parent: a.Make the left child of parent point to the new node b.Exit 7.If the value in the data field of the new node is greater than that of the parent: a.Make the right child of parent point to the new node b.Exit root Insert 55

Data Structures and Algorithms Session 13 Ver Allocate memory for the new node. 2.Assign value to the data field of new node. 3.Make the left and right child of the new node point to NULL. 4.Locate the node which will be the parent of the node to be inserted. Mark it as parent. 5.If parent is NULL (Tree is empty): a.Mark the new node as ROOT b.Exit 6.If the value in the data field of new node is less than that of parent: a.Make the left child of parent point to the new node b.Exit 7.If the value in the data field of the new node is greater than that of the parent: a.Make the right child of parent point to the new node b.Exit Inserting Nodes in a Binary Search Tree (Contd.) root

Data Structures and Algorithms Session 13 Ver Inserting Nodes in a Binary Search Tree (Contd.) 1.Allocate memory for the new node. 2.Assign value to the data field of new node. 3.Make the left and right child of the new node point to NULL. 4.Locate the node which will be the parent of the node to be inserted. Mark it as parent. 5.If parent is NULL (Tree is empty): a.Mark the new node as ROOT b.Exit 6.If the value in the data field of new node is less than that of parent: a.Make the left child of parent point to the new node b.Exit 7.If the value in the data field of the new node is greater than that of the parent: a.Make the right child of parent point to the new node b.Exit root

Data Structures and Algorithms Session 13 Ver. 1.0 Inserting Nodes in a Binary Search Tree (Contd.) 1.Allocate memory for the new node. 2.Assign value to the data field of new node. 3.Make the left and right child of the new node point to NULL. 4.Locate the node which will be the parent of the node to be inserted. Mark it as parent. 5.If parent is NULL (Tree is empty): a.Mark the new node as ROOT b.Exit 6.If the value in the data field of new node is less than that of parent: a.Make the left child of parent point to the new node b.Exit 7.If the value in the data field of the new node is greater than that of the parent: a.Make the right child of parent point to the new node b.Exit root 55

Data Structures and Algorithms Session 13 Ver. 1.0 Inserting Nodes in a Binary Search Tree (Contd.) 1.Allocate memory for the new node. 2.Assign value to the data field of new node. 3.Make the left and right child of the new node point to NULL. 4.Locate the node which will be the parent of the node to be inserted. Mark it as parent. 5.If parent is NULL (Tree is empty): a.Mark the new node as ROOT b.Exit 6.If the value in the data field of new node is less than that of parent: a.Make the left child of parent point to the new node b.Exit 7.If the value in the data field of the new node is greater than that of the parent: a.Make the right child of parent point to the new node b.Exit root parent

Data Structures and Algorithms Session 13 Ver. 1.0 Inserting Nodes in a Binary Search Tree (Contd.) 1.Allocate memory for the new node. 2.Assign value to the data field of new node. 3.Make the left and right child of the new node point to NULL. 4.Locate the node which will be the parent of the node to be inserted. Mark it as parent. 5.If parent is NULL (Tree is empty): a.Mark the new node as ROOT b.Exit 6.If the value in the data field of new node is less than that of parent: a.Make the left child of parent point to the new node b.Exit 7.If the value in the data field of the new node is greater than that of the parent: a.Make the right child of parent point to the new node b.Exit root parent

Data Structures and Algorithms Session 13 Ver. 1.0 Inserting Nodes in a Binary Search Tree (Contd.) 1.Allocate memory for the new node. 2.Assign value to the data field of new node. 3.Make the left and right child of the new node point to NULL. 4.Locate the node which will be the parent of the node to be inserted. Mark it as parent. 5.If parent is NULL (Tree is empty): a.Mark the new node as ROOT b.Exit 6.If the value in the data field of new node is less than that of parent: a.Make the left child of parent point to the new node b.Exit 7.If the value in the data field of the new node is greater than that of the parent: a.Make the right child of parent point to the new node b.Exit root parent

Data Structures and Algorithms Session 13 Ver. 1.0 Inserting Nodes in a Binary Search Tree (Contd.) 1.Allocate memory for the new node. 2.Assign value to the data field of new node. 3.Make the left and right child of the new node point to NULL. 4.Locate the node which will be the parent of the node to be inserted. Mark it as parent. 5.If parent is NULL (Tree is empty): a.Mark the new node as ROOT b.Exit 6.If the value in the data field of new node is less than that of parent: a.Make the left child of parent point to the new node b.Exit 7.If the value in the data field of the new node is greater than that of the parent: a.Make the right child of parent point to the new node b.Exit root parent.

Data Structures and Algorithms Session 13 Ver. 1.0 Insert operation complete Inserting Nodes in a Binary Search Tree (Contd.) 1.Allocate memory for the new node. 2.Assign value to the data field of new node. 3.Make the left and right child of the new node point to NULL. 4.Locate the node which will be the parent of the node to be inserted. Mark it as parent. 5.If parent is NULL (Tree is empty): a.Mark the new node as ROOT b.Exit 6.If the value in the data field of new node is less than that of parent: a.Make the left child of parent point to the new node b.Exit 7.If the value in the data field of the new node is greater than that of the parent: a.Make the right child of parent point to the new node b.Exit root parent

Data Structures and Algorithms Session 13 Ver. 1.0 Deleting Nodes from a Binary Search Tree Delete operation in a binary search tree refers to the process of deleting the specified node from the tree. Before implementing a delete operation, you first need to locate the position of the node to be deleted and its parent. To locate the position of the node to be deleted and its parent, you need to implement a search operation. Write an algorithm to locate the position of the node to deleted from a binary search tree.

Data Structures and Algorithms Session 13 Ver. 1.0 Algorithm to locate the node to be deleted Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child. root Suppose you want to delete node 70 Deleting Nodes from a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child. Deleting Nodes from a Binary Search Tree (Contd.) root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent = NULL Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent = NULL Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent = NULL parent Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNodeparent 70 > 52 Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNodeparent 70 > 52 Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent 70 > 52 Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver currentNode parent Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent 70 > 68 Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent 70 > 68 Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent 70 > 68 currentNode Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 parent currentNode Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 parent currentNode Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node parent

Data Structures and Algorithms Session 13 Ver < 72 currentNode parent Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent 70 < 72 currentNode Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 parent currentNode Nodes located Deleting Nodes from a Binary Search Tree (Contd.) 1.Make a variable/pointer currentNode point to the ROOT node. 2.Make a variable/pointer parent point to NULL. 3.Repeat steps a, b, and c until currentNode becomes NULL or the value of the node to be searched becomes equal to that of currentNode: a.Make parent point to currentNode. b.If the value to be deleted is less than that of currentNode: i.Make currentNode point to its left child. c.If the value to be deleted is greater than that of currentNode: i.Make currentNode point to its right child root Suppose you want to delete node 70 69

Data Structures and Algorithms Session 13 Ver. 1.0 Deleting Nodes from a Binary Search Tree (Contd.) Once the nodes are located, there can be three cases: Case I: Node to be deleted is the leaf node Case II: Node to be deleted has one child (left or right) Case III: Node to be deleted has two children

Data Structures and Algorithms Session 13 Ver. 1.0 Write an algorithm to delete a leaf node from a binary search tree. Deleting Nodes from a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 Algorithm to delete a leaf node from the binary tree. 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode is the root node: // If parent is // NULL a.Make ROOT point to NULL. b.Go to step 5. 3.If currentNode is left child of parent: a.Make left child field of parent point to NULL. b.Go to step 5. 4.If currentNode is right child of parent: a.Make right child field of parent point to NULL. b.Go to step 5. 5.Release the memory for currentNode Delete node 69 Deleting Nodes from a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 Delete node 69 parent 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode is the root node: // If parent is // NULL a.Make ROOT point to NULL. b.Go to step 5. 3.If currentNode is left child of parent: a.Make left child field of parent point to NULL. b.Go to step 5. 4.If currentNode is right child of parent: a.Make right child field of parent point to NULL. b.Go to step 5. 5.Release the memory for currentNode. currentNode Deleting Nodes from a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 Delete node 69 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode is the root node: // If parent is // NULL a.Make ROOT point to NULL. b.Go to step 5. 3.If currentNode is left child of parent: a.Make left child field of parent point to NULL. b.Go to step 5. 4.If currentNode is right child of parent: a.Make right child field of parent point to NULL. b.Go to step 5. 5.Release the memory for currentNode parent currentNode

Data Structures and Algorithms Session 13 Ver. 1.0 Delete node 69 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode is the root node: // If parent is // NULL a.Make ROOT point to NULL. b.Go to step 5. 3.If currentNode is left child of parent: a.Make left child field of parent point to NULL. b.Go to step 5. 4.If currentNode is right child of parent: a.Make right child field of parent point to NULL. b.Go to step 5. 5.Release the memory for currentNode parent currentNode

Data Structures and Algorithms Session 13 Ver. 1.0 Delete node 69 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode is the root node: // If parent is // NULL a.Make ROOT point to NULL. b.Go to step 5. 3.If currentNode is left child of parent: a.Make left child field of parent point to NULL. b.Go to step 5. 4.If currentNode is right child of parent: a.Make right child field of parent point to NULL. b.Go to step 5. 5.Release the memory for currentNode parent currentNode

Data Structures and Algorithms Session 13 Ver. 1.0 Delete node 69 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode is the root node: // If parent is // NULL a.Make ROOT point to NULL. b.Go to step 5. 3.If currentNode is left child of parent: a.Make left child field of parent point to NULL. b.Go to step 5. 4.If currentNode is right child of parent: a.Make right child field of parent point to NULL. b.Go to step 5. 5.Release the memory for currentNode parent currentNode

Data Structures and Algorithms Session 13 Ver. 1.0 Delete operation complete Delete node 69 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode is the root node: // If parent is // NULL a.Make ROOT point to NULL. b.Go to step 5. 3.If currentNode is left child of parent: a.Make left child field of parent point to NULL. b.Go to step 5. 4.If currentNode is right child of parent: a.Make right child field of parent point to NULL. b.Go to step 5. 5.Release the memory for currentNode parent currentNode

Data Structures and Algorithms Session 13 Ver. 1.0 Write an algorithm to delete a node, which has one child from a binary search tree. Deleting Nodes from a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver. 1.0 Algorithm to delete a node with one child. 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode root Deleting Nodes from a Binary Search Tree (Contd.) Delete node 80

Data Structures and Algorithms Session 13 Ver root parent currentNode 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode. Deleting Nodes from a Binary Search Tree (Contd.) Delete node 80

Data Structures and Algorithms Session 13 Ver root parent currentNode Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode. Delete node 80

Data Structures and Algorithms Session 13 Ver root parent currentNode child Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode. Delete node 80

Data Structures and Algorithms Session 13 Ver root parent currentNode child Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode. Delete node 80

Data Structures and Algorithms Session 13 Ver root parent currentNode child Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode. Delete node 80

Data Structures and Algorithms Session 13 Ver root parent currentNode child Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode. Delete node 80

Data Structures and Algorithms Session 13 Ver root parent currentNode child Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode. Delete node 80

Data Structures and Algorithms Session 13 Ver root parent currentNode child Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode. Delete node 80.

Data Structures and Algorithms Session 13 Ver root parent currentNode child Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode. Delete node 80.

Data Structures and Algorithms Session 13 Ver root parent currentNode child Delete operation complete Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.If currentNode has a left child: a.Mark the left child of currentNode as child. b.Go to step 4. 3.If currentNode has a right child: a.Mark the right child of currentNode as child. b.Go to step 4. 4.If currentNode is the root node: a.Mark child as root. b.Go to step 7. 5.If currentNode is the left child of parent: a.Make left child field of parent point to child. b.Go to step 7. 6.If currentNode is the right child of parent: a.Make right child field of parent point to child. b.Go to step 7. 7.Release the memory of currentNode. Delete node 80.

Data Structures and Algorithms Session 13 Ver. 1.0 Write an algorithm to delete a node, which has two children from a binary search tree. Deleting Nodes from a Binary Search Tree (Contd.)

Data Structures and Algorithms Session 13 Ver Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.Locate the inorder successor of currentNode. Mark it as Inorder_suc. Execute the following steps to locate Inorder_suc: a.Mark the right child of currentNode as Inorder_suc. b.Repeat until the left child of Inorder_suc becomes NULL: i.Make Inorder_suc point to its left child. 3.Replace the information held by currentNode with that of Inorder_suc. 4.If the node marked Inorder_suc is a leaf node: a.Delete the node marked Inorder_suc by using the algorithm for Case I. 5.If the node marked Inorder_suc has one child: a.Delete the node marked Inorder_suc by using the algorithm for Case II. Delete node 72 Algorithm to delete a node with two children. Deleting Nodes from a Binary Search Tree (Contd.) root

Data Structures and Algorithms Session 13 Ver Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.Locate the inorder successor of currentNode. Mark it as Inorder_suc. Execute the following steps to locate Inorder_suc: a.Mark the right child of currentNode as Inorder_suc. b.Repeat until the left child of Inorder_suc becomes NULL: i.Make Inorder_suc point to its left child. 3.Replace the information held by currentNode with that of Inorder_suc. 4.If the node marked Inorder_suc is a leaf node: a.Delete the node marked Inorder_suc by using the algorithm for Case I. 5.If the node marked Inorder_suc has one child: a.Delete the node marked Inorder_suc by using the algorithm for Case II. currentNode parent Delete node 72 Deleting Nodes from a Binary Search Tree (Contd.) root.

Data Structures and Algorithms Session 13 Ver. 1.0 currentNode parent Delete node 72 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.Locate the inorder successor of currentNode. Mark it as Inorder_suc. Execute the following steps to locate Inorder_suc: a.Mark the right child of currentNode as Inorder_suc. b.Repeat until the left child of Inorder_suc becomes NULL: i.Make Inorder_suc point to its left child. 3.Replace the information held by currentNode with that of Inorder_suc. 4.If the node marked Inorder_suc is a leaf node: a.Delete the node marked Inorder_suc by using the algorithm for Case I. 5.If the node marked Inorder_suc has one child: a.Delete the node marked Inorder_suc by using the algorithm for Case II root.

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder_suc Delete node 72 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.Locate the inorder successor of currentNode. Mark it as Inorder_suc. Execute the following steps to locate Inorder_suc: a.Mark the right child of currentNode as Inorder_suc. b.Repeat until the left child of Inorder_suc becomes NULL: i.Make Inorder_suc point to its left child. 3.Replace the information held by currentNode with that of Inorder_suc. 4.If the node marked Inorder_suc is a leaf node: a.Delete the node marked Inorder_suc by using the algorithm for Case I. 5.If the node marked Inorder_suc has one child: a.Delete the node marked Inorder_suc by using the algorithm for Case II root currentNode parent.

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder_suc Delete node 72 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.Locate the inorder successor of currentNode. Mark it as Inorder_suc. Execute the following steps to locate Inorder_suc: a.Mark the right child of currentNode as Inorder_suc. b.Repeat until the left child of Inorder_suc becomes NULL: i.Make Inorder_suc point to its left child. 3.Replace the information held by currentNode with that of Inorder_suc. 4.If the node marked Inorder_suc is a leaf node: a.Delete the node marked Inorder_suc by using the algorithm for Case I. 5.If the node marked Inorder_suc has one child: a.Delete the node marked Inorder_suc by using the algorithm for Case II root currentNode parent.

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder_suc Delete node 72 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.Locate the inorder successor of currentNode. Mark it as Inorder_suc. Execute the following steps to locate Inorder_suc: a.Mark the right child of currentNode as Inorder_suc. b.Repeat until the left child of Inorder_suc becomes NULL: i.Make Inorder_suc point to its left child. 3.Replace the information held by currentNode with that of Inorder_suc. 4.If the node marked Inorder_suc is a leaf node: a.Delete the node marked Inorder_suc by using the algorithm for Case I. 5.If the node marked Inorder_suc has one child: a.Delete the node marked Inorder_suc by using the algorithm for Case II root currentNode parent.

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder_suc Delete node 72 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.Locate the inorder successor of currentNode. Mark it as Inorder_suc. Execute the following steps to locate Inorder_suc: a.Mark the right child of currentNode as Inorder_suc. b.Repeat until the left child of Inorder_suc becomes NULL: i.Make Inorder_suc point to its left child. 3.Replace the information held by currentNode with that of Inorder_suc. 4.If the node marked Inorder_suc is a leaf node: a.Delete the node marked Inorder_suc by using the algorithm for Case I. 5.If the node marked Inorder_suc has one child: a.Delete the node marked Inorder_suc by using the algorithm for Case II root currentNode parent. 75

Data Structures and Algorithms Session 13 Ver. 1.0 Inorder_suc Delete node 72 Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.Locate the inorder successor of currentNode. Mark it as Inorder_suc. Execute the following steps to locate Inorder_suc: a.Mark the right child of currentNode as Inorder_suc. b.Repeat until the left child of Inorder_suc becomes NULL: i.Make Inorder_suc point to its left child. 3.Replace the information held by currentNode with that of Inorder_suc. 4.If the node marked Inorder_suc is a leaf node: a.Delete the node marked Inorder_suc by using the algorithm for Case I. 5.If the node marked Inorder_suc has one child: a.Delete the node marked Inorder_suc by using the algorithm for Case II root currentNode parent. 75

Data Structures and Algorithms Session 13 Ver Inorder_suc Delete operation complete Deleting Nodes from a Binary Search Tree (Contd.) 1.Locate the node to be deleted. Mark it as currentNode and its parent as parent. 2.Locate the inorder successor of currentNode. Mark it as Inorder_suc. Execute the following steps to locate Inorder_suc: a.Mark the right child of currentNode as Inorder_suc. b.Repeat until the left child of Inorder_suc becomes NULL: i.Make Inorder_suc point to its left child. 3.Replace the information held by currentNode with that of Inorder_suc. 4.If the node marked Inorder_suc is a leaf node: a.Delete the node marked Inorder_suc by using the algorithm for Case I. 5.If the node marked Inorder_suc has one child: a.Delete the node marked Inorder_suc by using the algorithm for Case II root currentNode parent. 75 Delete node 72:

Data Structures and Algorithms Session 13 Ver. 1.0 Activity: Implementing a Binary Search Tree Problem Statement: Write a program to implement insert and traverse operations on a binary search tree that contains the words in a dictionary.

Data Structures and Algorithms Session 13 Ver. 1.0 In this session, you learned that: A tree is a nonlinear data structure that represents a hierarchical relationship among the various data elements. A binary tree is a specific type of tree in which each node can have a maximum of two children. Binary trees can be implemented by using arrays as well as linked lists, depending upon requirement. Traversal of a tree is the process of visiting all the nodes of the tree once. There are three types of traversals, namely inorder, preorder, and postorder traversal. Binary search tree is a binary tree in which the value of the left child of a node is always less than the value of the node, and the value of the right child of a node is greater than the value of the node. Summary

Data Structures and Algorithms Session 13 Ver. 1.0 Inserting a node in a binary search tree requires you to first locate the appropriate position for the node to be inserted. You need to check for the following three cases before deleting a node from a binary search tree. If the node to be deleted is the leaf node If the node to be deleted has one child (left or right) If the node to be deleted has two children Summary (Contd.)