csci 241 - wwu computer science faculty web pageswehrwes/courses/... · announcements •a1 is in!...
TRANSCRIPT
![Page 1: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/1.jpg)
CSCI 241Lecture 9
Binary Search Trees
![Page 2: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/2.jpg)
Announcements• A1 is in!
• Reminder again: if you submit late, you need to email me after you submit so I can pull your latest changes from Github.
• Aiming for Friday A2 release
![Page 3: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/3.jpg)
Goals
• Know the definition and uses of a binary search tree.
• Be prepared to implement, and know the runtime of, the following BST operations:
• searching
• inserting
• deleting
![Page 4: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/4.jpg)
Tree TerminologyM is the root of this treeG is the root of the left subtree of M
B, H, J, N, S are leaves (have no children)N is the left child of PS is the right child of P
P is the parent of N
M and G are ancestors of D
P, N, S are descendants of W
J is at depth 2 (length of path from root)The subtree rooted at W has height (length of longest path to a leaf) of 2
A collection of several trees is called a ____?
M
G W
PJD
NHB S
![Page 5: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/5.jpg)
Tree Terminology: Lighting Round!
What’s the root of G’s right subtree?
What’s an ancestor of F?
What’s C’s parent?
What’s a node at depth 1?
What’s a node at the root of a subtree of height 0?
G
A B
C D E F
ABCD:
![Page 6: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/6.jpg)
Tree Terminology: Lighting Round!
What’s the height of the tree rooted at G?
A. 1B. 2C. 3D. 4
G
A B
C D E F
H
ABCD:
![Page 7: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/7.jpg)
Tree Terminology: Lighting Round!
What’s the depth of node D?A. 1B. 2C. 3D. 4
G
A B
C D E F
H
ABCD:
![Page 8: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/8.jpg)
Binary Tree
public class Tree { int value; Tree parent; Tree left; Tree right; }
![Page 9: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/9.jpg)
Binary Search Tree/** BST: a binary tree, in which: * -all values in left are < value * -all values in right are > value * -left and right are BSTs */ public class BST { int value; BST parent; BST left; BST right; }
consequence: no duplicates!
![Page 10: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/10.jpg)
Binary Search Tree
> 5< 5 2
0 3 7 9
5
8
![Page 11: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/11.jpg)
10
8 16
4 9 11 17
10
8 16
4 12 14 17
10
14
12 293
10
14
16
15
20
A: B:
C: D:
ABCD: Which of these is not a binary search tree?
![Page 12: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/12.jpg)
Traversing a BST
10
8 16
4 9 11 17
10
14
12 293
10
14
16
15
20
Write the values printed by an in-order traversal of each of the following BSTs:
in-order traversal:1. Process left subtree2. Process root3. Process right subtree
post-order traversal:1. Process left subtree2. Process right subtree3. Process root
pre-order traversal:1. Process root2. Process left subtree3. Process right subtree
![Page 13: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/13.jpg)
Searching a Binary Tree
• A binary tree is
• Empty, or
• Three things:
• value
• a left binary tree
• a right binary tree
(base case - not found!)
(base case - is this v?)
(recursive call - is v in left?)
(recursive call - is v in right?)
Find v in a binary tree:boolean findVal(Tree t, int v):
if t == null: return false
if t.value == v: return true
return findVal(t.left) || findVal(t.right)
(not BST!)
(not Search!)
![Page 14: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/14.jpg)
Searching a BSTsearch(t, 11)10
8 16
4 9 11 17
t:11 > 10
search(right, 11)
![Page 15: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/15.jpg)
Searching a BSTsearch(t, 11)10
8 16
4 9 11 17
t:11 > 10
search(right, 11)
11 < 16
search(left, 11)
![Page 16: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/16.jpg)
Searching a BSTsearch(t, 11)10
8 16
4 9 11 17
t:11 > 10
search(right, 11)
11 < 16
search(left, 11)11 == 11found it! return.
![Page 17: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/17.jpg)
Searching a BST - the nonexistent case
search(t, 5)10
8 16
4 9 11 17
t:5 < 10
search(left, 5)
![Page 18: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/18.jpg)
Searching a BST - the nonexistent case
search(t, 5)10
8 16
4 9 11 17
t:5 < 10
search(left, 5)
5 < 8
search(left, 5)
![Page 19: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/19.jpg)
Searching a BST - the nonexistent case
search(t, 5)10
8 16
4 9 11 17
t:5 < 10
search(left, 5)
5 < 8
search(left, 5)
5 > 4
search(right, 5)
null - not found!
![Page 20: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/20.jpg)
Searching: BT vs BST /** Searches the binary tree * rooted at n for value v, * returning true iff it is * in the tree. */ boolean srchBT(n, v) { if (n == null) { return false; } if (n.v == v) { return true; } return srchBT(n.left, v) || srchBT(n.right, v); }
/** Searches the binary *search* * tree rooted at n for value v, * returning true iff it is in * the tree. */ public srchBST(n, v) { if (n == null) { return false; } if (n.v == v) { return true; } if (v < n.v) { return srchBST(n.left, v); } else { return srchBST(n.right, v); } }}
Two recursive calls One recursive call!
![Page 21: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/21.jpg)
Searching a BST: What’s the runtime?
boolean search(BST t, int v): if t == null: return false if t.value == v: return true if v < t.value: return search(t.left) else: return search(t.right)
10
8 16
4 9 11 17
If h is the tree’s height, search can visit at most h+1 nodes! Runtime of search is O(h).
That’s great, but how does h relate to n, the number of nodes?
![Page 22: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/22.jpg)
How many nodes does a tree with height h have?
5
4
7 8
2
0 4
depth0
1
2
5
2
4Height 2, minimum number of nodes
Height 2, maximum number of nodes
5
4
7 8
2
0 4
depth0
1
2
5
2
4Height 2, minimum number of nodes
Height 2, maximum number of nodesConsider h = 2:
Fewest possible:n = h+1n is O(h)
Most possible: At depth d: 2d nodes possible. At all depths: 20 + 21 + … + 2h
= 2h+1 - 1n = 2h+1 - 1n is O(2h) h is O(log n)
Complete binary tree
h is O(n)
![Page 23: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/23.jpg)
Searching a BST: What’s the runtime?
boolean search(BST t, int v): if t == null: return false if t.value == v: return true if t.value < v: return search(t.left) else: return search(t.right)
10
8 16
4 9 11 17
Runtime of search is O(h).
10
14
16
15
20
Worst: O(n) Best: O(log n)
We want our trees to look more like thisthan this
![Page 24: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/24.jpg)
Inserting into a BST
![Page 25: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/25.jpg)
Inserting into a BSTinsert(t, 11)10
8 16
4 9 11 17
t:11 > 10
insert(right, 11)
![Page 26: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/26.jpg)
Inserting into a BSTinsert(t, 11)10
8 16
4 9 11 17
t:11 > 10
insert(right, 11)
11 < 16
insert(left, 11)
![Page 27: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/27.jpg)
Inserting into a BSTinsert(t, 11)10
8 16
4 9 11 17
t:11 > 10
insert(right, 11)
11 < 16
insert(left, 11)11 == 11found it! no duplicates,allowed; nothing to do.return.
![Page 28: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/28.jpg)
Inserting into a BST - the nonexistent case
insert(t, 5)10
8 16
4 9 11 17
t:5 < 10
insert(left, 5)
![Page 29: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/29.jpg)
Inserting into a BST - the nonexistent case
insert(t, 5)10
8 16
4 9 11 17
t:5 < 10
insert(left, 5)
5 < 8
insert(left, 5)
![Page 30: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/30.jpg)
Inserting into a BST - the nonexistent case
insert(t, 5)10
8 16
4 9 11 17
t:5 < 10
insert(left, 5)
5 < 8
insert(left, 5)
5 > 4
insert(right, 5)
null - not found. insertit here!
5
![Page 31: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/31.jpg)
Let’s Build Some Treest = new BST(); t.insert(10) t.insert(15) t.insert(16) t.insert(8) t.insert(16) t.insert(9) t.insert(11) t.insert(-1)
t = new BST(); t.insert(-1) t.insert(8) t.insert(9) t.insert(10) t.insert(11) t.insert(15) t.insert(16) t.insert(16)
![Page 32: CSCI 241 - WWU Computer Science Faculty Web Pageswehrwes/courses/... · Announcements •A1 is in! • ... 10 11 15 Insertion order matters. 16 We can’t always control it. 10 8](https://reader036.vdocuments.mx/reader036/viewer/2022071216/6047bea07d6b246657009603/html5/thumbnails/32.jpg)
-1
8
9
10
11
15
16Insertion order matters.We can’t always control it.
10
8 15
-1 9 11 16
Let’s Build Some Trees