CSC 301.01, Class 14: 2-3 trees
- Notes and news
- Upcoming work
- Extra credit
- Review: red-black trees
- 2-3 trees
- Insertion in 2-3 trees
- Deletion in 2-3 trees
- 2-3 trees vs. red-black trees
News / Etc.
- I hope you had fun without me and enjoyed seeing a different model of teaching.
- I have not gotten grading done. If there are particular things you think might be a problem, ask questions.
- Exam 1 due Wednesday at 5:00 p.m.
- The next assignment will be distributed on Wednesday.
Extra credit (Academic)
- CS Table, Tuesday: ???
- Google Stuff, Tuesday
- Convocation, Thursday
Extra credit (Peer)
Extra Credit (Misc)
Good things to do
- GHS Homecoming Parade, Thursday, 4pm at or near GHS
- Will you accept mediocre formatting of our math?
- If I am breaking down summations (sum(sum(sum(…)))), should I explain
- what rule I am applying for each summation?
- The answers to sums a and b are standards. Can I just cite them?
- No. Provide an anaysis of where the standard formula comes from
- Do I have to prove my solutions to the recurrence relations using induction?
- No. Just show how you got it with some explanation.
- There are three approaches, each gives enough info if you tell me what you are doing.
- What do you want for code?
- Print out of the important portions.
- You can use a word processor or markdown or …
- I will not run the code; I can usually tell correctness by inspection.
Review: red-black trees
A red black tree is a binary search tree
- Properties mean that it is mostly balanced, height O(logn)
- Nodes are marked red or black.
- The black height of every leaf is the same (# of black nodes between root and leaf)
- Red nodes only have black children.
- Root is black.
- Leaves are black.
- The shortest path and the longest path can’t be off by more than a factor of 2 (all black nodes vs. alternating red and black)
How do we maintain these properties when we insert or delete?
- We need to rotate things. There are a lot of cases.
- Insert the node. If the parent is black and the grandparent is black, you can just change the parent to red.
- See if we screwed up the height. If so, rotate
We will come back to this.
- Balanced tree.
- Trinary: Nodes have two or three children and one or two values
- The three subtree are
- “less than first value”
- “between first and second value”
- “greater than second value”
- The height of every leaf is the same.
- The height must be logn or less. We may, however, have to do two comparisons per node in searching, so the overall cost of find is O(2*logn), which is still O(logn)
- We’ll make the leaves null wlog
Insertion in 2-3 trees
You’ve reached the leaf. You want to add another value. What do you do?
- Easy case: The parent has only one value. Just add a second value to the parent.
- Hard case: The parent has two values. You can’t just add a second value.
- Does it matter if you want to add to the left, middle, or right? No.
- Option 1: If you have lots of two-value nodes, split them all up and reorganize. Sam notes: Local and recurse is a good strategy.
- Option 2: Repeatedly move up? But then you might hit the root.
- Think about what you could do locally and then move the problem up