cse 3358 note set 10 data structures and algorithms
TRANSCRIPT
![Page 1: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/1.jpg)
CSE 3358 NOTE SET 10
Data Structures and Algorithms
![Page 2: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/2.jpg)
Complexity of Searching a Binary Tree
Worst Case: Linked List O(n)
Best Case: Complete Binary Tree O(lg n)
Average Case: Average Position in Average Tree O(lg n)
![Page 3: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/3.jpg)
Tree Traversal
Process of visiting every node exactly one time No implied notion of order, so there are n! different
traversals Most are useless because
Depth-First Breadth-First
![Page 4: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/4.jpg)
Depth First Searching
In – order Left Visit Right
Pre – Order Visit Left Right
Post – Order Left Right Visit
![Page 5: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/5.jpg)
In - Order
template<class T>void BST<T>::inorder(BSTNode<T> *p) { if (p != 0) { inorder (p->left); visit(p); inorder (p->right); }}
13
10 25
2 12 20 31
293
In order Traversal:
![Page 6: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/6.jpg)
Pre - Order
template<class T>void BST<T>::preorder(BSTNode<T> *p) { if (p != 0) { visit(p); preorder (p->left); preorder (p->right); }}
13
10 25
2 12 20 31
293
Pre order Traversal:
![Page 7: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/7.jpg)
Post - Order
template<class T>void BST<T>::postorder(BSTNode<T> *p) { if (p != 0) { postorder (p->left); postorder (p->right); visit(p); }}
13
10 25
2 12 20 31
293
Post order Traversal:
![Page 8: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/8.jpg)
Breadth-First Traversal
Visiting each node top-down-left-to-right Use a queue to store the children of a node when
the node is visited13
10 25
2 12 20 31
293
Breadth-First Traversal:
![Page 9: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/9.jpg)
Breadth-First Traversal – Implementation Ideas
13
10 25
2 12 20 31
293
![Page 10: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/10.jpg)
Breadth-First IMPL
template<class T>void BST<T>::breadthFirst(BSTNode<T> *p) { Queue<BSTNode<T>*> queue; BSTNode<T> *p = root; if (p != 0) { queue.enqueue(p); while(!queue.empty()) { p = queue.dequeue(); visit(p); if (p -> left != 0) queue.enqueue(p->left); if (p -> right != 0) queue.enqueue(p->right); } }}
![Page 11: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/11.jpg)
To Recur or Not to Recur
template <class T>void BST<T>::iterativePreorder(){ Stack<BSTNode<T>*> travStack; BSTNode<T> *p = root; if (p != 0) { travStack.push(p); while(!travStack.empty()) { p = travStack.pop(); visit(p); if (p->right != 0) travStack.push(p->right); if (p->left != 0) travStack.push(p->left); } }}
![Page 12: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/12.jpg)
Deleting
Three Cases:1) Node is a leaf
Set the pointer from the parent to null. release memory as appropriate.
2) Node has 1 child Set the pointer from the parent to the child of the node to
be deleted release memory as appropriate
3) Node has 2 children Will require multi-step process
![Page 13: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/13.jpg)
Deleting: Case 1
13
10 25
2 12 20 31
293
Delete 3
![Page 14: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/14.jpg)
Deleting: Case 2
13
10 25
2 12 20 31
293
Delete 31
![Page 15: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/15.jpg)
Deleting: Case 3 – Option 1: Deleting by Merging
13
10 25
2 12 20 31
233
Delete 25
39
21 24
Find the right-most node of the left subtree
Make that node the parent of the right subtree (of the node to be deleted)
![Page 16: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/16.jpg)
Deleting: Case 3 – Option 2: Deleting by Copying
13
10 25
2 12 20 31
233
Delete 25
39
21 24
Find the right-most node of the left subtree
Copy the key of that node to the node to be deleted.
Delete the node that was copied from.
![Page 17: CSE 3358 NOTE SET 10 Data Structures and Algorithms](https://reader034.vdocuments.us/reader034/viewer/2022051418/5697bfbd1a28abf838ca2371/html5/thumbnails/17.jpg)
?