Stephen Dantzig. Portrait Lighting for Digital Photographers: The
CS61BL - University of California,...
Transcript of CS61BL - University of California,...
![Page 1: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/1.jpg)
CS61BL
Lecture 3:
Asymptotic Analysis
Trees & Tree Traversals
Stacks and Queues
Binary Search Trees (and other trees)
![Page 2: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/2.jpg)
![Page 3: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/3.jpg)
Program Efficiency
• How much memory a program uses
– Memory is cheap
• How much time a program uses
![Page 4: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/4.jpg)
Testing Time Efficiency
• Benchmarks
– Hardware specs?
– Which programming language?
– Other processes running?
• Estimate with statement count? – int a = 1; // 1 “unit” of time?
– int[] b = new int[100]; // 100 “units” of time?
– b[15] = 2 + 2; // 1… 2… 3 (?) “units” of time?
![Page 5: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/5.jpg)
Big-Oh Notation
• Classify program running times into groups
– E.g. O(𝑛2), O(2𝑛)
• Formal definition (version 1):
![Page 6: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/6.jpg)
Big-Oh Notation
• Classify program running times into groups
– E.g. O(𝑛2), O(2𝑛)
• Formal definition (version 1):
![Page 7: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/7.jpg)
Big-Oh Notation
• Classify program running times into groups – E.g. O(𝑛2), O(2𝑛)
• Formal definition (version 1):
(Upper bound on worst case running time)
![Page 8: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/8.jpg)
Big-Oh Example 1
![Page 9: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/9.jpg)
Source: wolframalpha.com
![Page 10: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/10.jpg)
Source: wolframalpha.com
![Page 11: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/11.jpg)
Big-Oh Notation
• Classify program running times into groups
– E.g. O(𝑛2), O(2𝑛)
• Formal definition (version 2):
![Page 12: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/12.jpg)
Big-Oh Example 2
![Page 13: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/13.jpg)
Shortcuts
• Get rid of additive terms with smaller growth order
– E.g. 𝑛2 + 2𝑛 + 3 becomes 𝑛2
• Get rid of constant factors
– E.g. 10𝑛2 becomes 𝑛2
• NOTE: Can’t drop non-constant factors!
– Common mistake: 𝑛 log2(𝑛) becomes 𝑛
![Page 14: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/14.jpg)
Big-Oh Example 3
![Page 15: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/15.jpg)
Ω
• Ω:
– Lower bound / best case
![Page 16: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/16.jpg)
Θ
• Θ:
– Tight bound
![Page 17: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/17.jpg)
Big-Oh Example 4
• Showed:
• Shortcut:
– Show: and
– Use hierarchy of common time complexity classes
![Page 18: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/18.jpg)
Time Complexity Classes Notation Common name
Θ(1) Constant
Θ(log 𝑛) Logarithmic
Θ 𝑛𝑐 , 0 < 𝑐 < 1 Polynomial
Θ(𝑛) Linear
Θ(𝑛 log 𝑛) 𝑛 log 𝑛
Θ(𝑛2) Quadratic
Θ(𝑛3) Cubic
Θ 𝑛𝑐 , 𝑐 > 1 Polynomial
Θ 𝑐𝑛 , 𝑐 > 1 Exponential
Θ(𝑛!) Factorial
![Page 19: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/19.jpg)
Source: http://science.slc.edu/~jmarshall/courses/2002/spring/cs50/BigO/
![Page 20: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/20.jpg)
Source: http://science.slc.edu/~jmarshall/courses/2002/spring/cs50/BigO/
![Page 21: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/21.jpg)
Source: http://science.slc.edu/~jmarshall/courses/2002/spring/cs50/BigO/
![Page 22: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/22.jpg)
Big O, Ω, Θ
• How well does a program scale?
– Youtube video quality
– Video game graphics settings
– Google results
– Facebook users
![Page 23: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/23.jpg)
Story time
• Simplex algorithm
– Developed by George Dantzig of UC Berkeley
– Solves linear programs:
– Worst case exponential time, but fast enough polynomial time in practice
![Page 24: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/24.jpg)
Linked List
• Each node has at most one “next” node:
![Page 25: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/25.jpg)
Tree
• Each node can have more than one “next” (child) node:
![Page 26: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/26.jpg)
Terminology • Node:
– Contains an item – Similar to linked list node
• Root: – “Top” level / “first” node – Has no parent – Similar to linked list head – Tree can only have one root
• Leaf – “Bottom” / “last” node – Has no children – Similar to last node of linked list – Tree can have multiple leaf nodes
![Page 27: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/27.jpg)
Terminology
• Children
– Tree nodes can have multiple children
– Similar to linked list node’s “myNext”
• Parent
– Each tree node can only have 1 parent
– Tree nodes can share a parent (siblings)
– Similar to linked list node’s “myPrev”
![Page 28: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/28.jpg)
1
3 4 2
7 8 9 10
12 11
6 5
![Page 29: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/29.jpg)
Terminology
• Edge – Connects two nodes (pink arrows)
• Path – A series of edges that connect two nodes through
intermediary nodes
• Depth – Length of path from root node
• Height – Length of path to deepest descendant
![Page 30: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/30.jpg)
1
3 4 2
7 8 9 10
12 11
6 5
![Page 31: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/31.jpg)
Linked List -> Tree
• TreeNode has instance variable ArrayList<TreeNode> children – ListNode has instance variable myNext
• Tree has instance variable myRoot – LinkedList has instance
variable myHead
• TreeNode and ListNode both have myItem
![Page 32: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/32.jpg)
Tree Uses
• Parsing text
– Parse tree: sentence structure (e.g. English)
– Abstract Syntax Tree: source code structure (e.g. Java)
![Page 33: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/33.jpg)
Tree Uses
• Directory structure:
– Children: everything inside a directory
– Parent: directory containing stuff
![Page 34: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/34.jpg)
Project 2
• File / folder compression
• Specs out this weekend
• Much more difficult than project 1
– So start early!
![Page 35: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/35.jpg)
![Page 36: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/36.jpg)
![Page 37: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/37.jpg)
![Page 38: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/38.jpg)
![Page 39: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/39.jpg)
Midterm 1 Post-mortem
• Mean: 28/45, Standard deviation: 9
![Page 40: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/40.jpg)
Upcoming Events
• Tonight: CS61BL dessert potluck / board game night!
– 7pm to 11pm
• Friday: 61ABC Hackathon
– 5pm to midnight
• Both in Wozniak Lounge (438 Soda)
• Free food!
![Page 41: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/41.jpg)
Stack
• Last In, First Out (LIFO)
– Most recent item added is next one removed
• Like dish tower at a buffet
Top of stack
![Page 42: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/42.jpg)
Stack
• Last In, First Out (LIFO)
– Most recent item added is next one removed
• Like dish tower at a buffet
Top of stack
![Page 43: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/43.jpg)
Stack
• Last In, First Out (LIFO)
– Most recent item added is next one removed
• Like dish tower at a buffet
Top of stack
![Page 44: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/44.jpg)
Stack
• Last In, First Out (LIFO)
– Most recent item added is next one removed
• Like dish tower at a buffet
Top of stack
![Page 45: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/45.jpg)
Stack Operations
• push: add item to front / top of stack
• pop: remove first item of stack
• peek: access first item of stack w/o returning it
• empty: check if stack has any items in it
![Page 46: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/46.jpg)
![Page 47: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/47.jpg)
Stack Example 1
// start with empty stack
![Page 48: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/48.jpg)
Stack Example 1
// start with empty stack
push(1)
1 Top of stack
![Page 49: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/49.jpg)
Stack Example 1
// start with empty stack
push(1)
push(2)
Top of stack
1
2
![Page 50: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/50.jpg)
Stack Example 1
// start with empty stack
push(1)
push(2)
pop() // 2
Top of stack 1
![Page 51: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/51.jpg)
Stack Example 1
// start with empty stack
push(1)
push(2)
pop() // 2
peek() // 1
Top of stack 1
![Page 52: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/52.jpg)
Stack Example 1
// start with empty stack
push(1)
push(2)
pop() // 2
peek() // 1
empty() // false
Top of stack 1
![Page 53: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/53.jpg)
Stack Example 1
// start with empty stack
push(1)
push(2)
pop() // 2
peek() // 1
empty() // false
pop() // 1
Top of stack
![Page 54: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/54.jpg)
Stack Example 1
// start with empty stack
push(1)
push(2)
pop() // 2
peek() // 1
empty() // false
pop() // 1
empty() // true Top of stack
![Page 55: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/55.jpg)
Stack Uses
• Call stack (function calls)
– Make a function call: push stack frame onto stack
– Exit a function: pop off stack
– Stack overflow: too many stack frames on stack
![Page 56: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/56.jpg)
Stack Uses
• Parenthesis matching
– [1 + (2 * 3) / (4 – 5)]
• HTML tag matching – <a> stuff </a>
• LaTeX \begin{} \end{} matching
![Page 57: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/57.jpg)
Stack Example 2
( { [ ] } ( ) )
// start with empty stack
![Page 58: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/58.jpg)
Stack Example 2
( { [ ] } ( ) )
// start with empty stack
push (
Top of stack (
![Page 59: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/59.jpg)
Stack Example 2
( { [ ] } ( ) )
// start with empty stack
push (
push {
Top of stack
(
{
![Page 60: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/60.jpg)
Stack Example 2
( { [ ] } ( ) )
// start with empty stack
push (
push {
push [
Top of stack
(
{
[
![Page 61: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/61.jpg)
Stack Example 2
( { [ ] } ( ) )
// start with empty stack
push (
push {
push [
pop ] Top of stack
(
{
![Page 62: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/62.jpg)
Stack Example 2
( { [ ] } ( ) )
// start with empty stack
push (
push {
push [
pop ]
pop } Top of stack (
![Page 63: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/63.jpg)
Stack Example 2
( { [ ] } ( ) )
// start with empty stack
push (
push {
push [
pop ]
pop }
push (
Top of stack
(
(
![Page 64: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/64.jpg)
Stack Example 2
( { [ ] } ( ) )
// start with empty stack
push (
push {
push [
pop ]
pop }
push (
pop )
Top of stack (
![Page 65: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/65.jpg)
Stack Example 2 ( { [ ] } ( ) )
// start with empty stack
push (
push {
push [
pop ]
pop }
push (
pop )
pop ) Top of stack
![Page 66: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/66.jpg)
Stack Example 3
( { ] [ } ( ) )
// start with empty stack
Top of stack
![Page 67: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/67.jpg)
Stack Example 3
( { ] [ } ( ) )
// start with empty stack
push (
Top of stack (
![Page 68: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/68.jpg)
Stack Example 3
( { ] [ } ( ) )
// start with empty stack
push (
push {
Top of stack
(
{
![Page 69: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/69.jpg)
Stack Example 3
( { ] [ } ( ) )
// start with empty stack
push (
push {
// error Top of stack
(
{
![Page 70: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/70.jpg)
Implementing a Stack
• Linked list
– Push: append to front
– Pop: remove from front
• Array list
– Keep track of last element’s index
– Push: add to end of list
– Pop: remove from end of list
![Page 71: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/71.jpg)
Queues
• First In, First Out (FIFO)
– Element that has been in queue for the longest gets out first
• Like people standing in a line
Front Back
![Page 72: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/72.jpg)
Queues
• First In, First Out (FIFO)
– Element that has been in queue for the longest gets out first
• Like people standing in a line
Front Back
![Page 73: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/73.jpg)
Queues
• First In, First Out (FIFO)
– Element that has been in queue for the longest gets out first
• Like people standing in a line
Front Back
![Page 74: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/74.jpg)
Queues
• First In, First Out (FIFO)
– Element that has been in queue for the longest gets out first
• Like people standing in a line
Front Back
![Page 75: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/75.jpg)
Operations
• add / enqueue: add element to back of queue
• peek / element: access first element w/o removing it
• poll / remove / dequeue: remove first element and return it
![Page 76: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/76.jpg)
Implementing Queues
• Linked list
– Keep a pointer to end of linked list
– Enqueue: add to end
– Dequeue: remove from front
– (or vice versa)
![Page 77: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/77.jpg)
Queue Example
(start with empty queue)
Front / back of queue
![Page 78: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/78.jpg)
Queue Example
(start with empty queue)
enqueue(1)
Front of queue
1
Back of queue
![Page 79: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/79.jpg)
Queue Example
(start with empty queue)
enqueue(1)
enqueue(2)
Front of queue
1
Back of queue
2
![Page 80: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/80.jpg)
Queue Example
(start with empty queue)
enqueue(1)
enqueue(2)
dequeue() // 1
Front of queue
Back of queue
2
![Page 81: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/81.jpg)
Queue Example
(start with empty queue)
enqueue(1)
enqueue(2)
dequeue() // 1
peek() // 2
Front of queue
Back of queue
2
![Page 82: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/82.jpg)
Queue Example
(start with empty queue)
enqueue(1)
enqueue(2)
dequeue() // 1
peek() // 2
dequeue() // 2
Front / back of queue
![Page 83: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/83.jpg)
Tree Traversal
• Fringe: group of nodes to be visited next
• Algorithm:
– Add root to fringe
– While fringe is not empty:
• Remove and process a node from fringe
• Add its children to the fringe
![Page 84: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/84.jpg)
Tree Traversals: Depth First Search
• Node order:
– Start at root
– Go as deep as you can (choosing children arbitrarily)
– Backtrack to unvisited nodes
• Use stack for fringe
![Page 85: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/85.jpg)
1
5 7 2
6 4 3
Top of stack
![Page 86: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/86.jpg)
1
5 7 2
6 4 3
Top of stack 1
![Page 87: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/87.jpg)
1
5 7 2
6 4 3
Top of stack
![Page 88: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/88.jpg)
1
5 7 2
6 4 3 Top of stack
7
5
2
![Page 89: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/89.jpg)
1
5 7 2
6 4 3
Top of stack
7
5
![Page 90: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/90.jpg)
1
5 7 2
6 4 3 Top of stack
7
5
4
3
![Page 91: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/91.jpg)
1
5 7 2
6 4 3 Top of stack
7
5
4
![Page 92: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/92.jpg)
1
5 7 2
6 4 3
Top of stack
7
5
![Page 93: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/93.jpg)
1
5 7 2
6 4 3
Top of stack
7
![Page 94: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/94.jpg)
1
5 7 2
6 4 3
Top of stack
7
6
![Page 95: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/95.jpg)
1
5 7 2
6 4 3
Top of stack 7
![Page 96: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/96.jpg)
1
5 7 2
6 4 3
Top of stack
![Page 97: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/97.jpg)
1
5 7 2
6 4 3
Top of stack
![Page 98: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/98.jpg)
Tree Traversal
• Fringe: group of nodes to be visited next
• Algorithm:
– Add root to fringe
– While fringe is not empty:
• Remove and process a node from fringe
• Add its children to the fringe
![Page 99: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/99.jpg)
Tree Traversal: Breadth First Search
• Node order:
– Start at root
– Visit all nodes at next depth level
– Repeat
• Use queue for fringe
![Page 100: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/100.jpg)
1
3 4 2
7 6 5
Front / back of queue
![Page 101: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/101.jpg)
1
3 4 2
7 6 5
Front
1
Back
![Page 102: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/102.jpg)
1
3 4 2
7 6 5
Front / back of queue
![Page 103: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/103.jpg)
1
3 4 2
7 6 5
Front
2 3 4
Back
![Page 104: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/104.jpg)
1
3 4 2
7 6 5
Front
3 4
Back
![Page 105: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/105.jpg)
1
3 4 2
7 6 5
Front
3 4
Back
5 6
![Page 106: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/106.jpg)
1
3 4 2
7 6 5
Front
4
Back
5 6
![Page 107: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/107.jpg)
1
3 4 2
7 6 5
Front
4
Back
5 6 7
![Page 108: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/108.jpg)
1
3 4 2
7 6 5
Front Back
5 6 7
![Page 109: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/109.jpg)
1
3 4 2
7 6 5
Front Back
6 7
![Page 110: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/110.jpg)
1
3 4 2
7 6 5
Front Back
7
![Page 111: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/111.jpg)
1
3 4 2
7 6 5
Front / back
![Page 112: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/112.jpg)
Binary Trees
• Each node has up to 2 children
• Instead of ArrayList of children, nodes have myLeft and myRight instance variables
![Page 113: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/113.jpg)
Binary Tree Traversals
• Start at root
• A: Process left subtree
• B: Process current node’s element
• C: Process right subtree
• Preorder: BAC
• Inorder: ABC
• Postorder: ACB
![Page 114: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/114.jpg)
5
4 3
2 1 Preorder, inorder, or postorder?
![Page 115: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/115.jpg)
5
4 3
2 1 Preorder, inorder, or postorder?
![Page 116: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/116.jpg)
1
5 2
4 3 Preorder, inorder, or postorder?
![Page 117: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/117.jpg)
1
5 2
4 3 Preorder, inorder, or postorder?
![Page 118: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/118.jpg)
4
5 2
3 1 Preorder, inorder, or postorder?
![Page 119: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/119.jpg)
4
5 2
3 1 Preorder, inorder, or postorder?
![Page 120: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/120.jpg)
Binary Tree Array Representation
• Root at index 1
• If node is at index 𝑖
– myLeft at index 2𝑖
– myRight at index 2𝑖 + 1
• Nothing at index 0
![Page 121: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/121.jpg)
Binary Tree Array Example
1
3 2
5 4 7
X 1 2 3 4 5 6 7
![Page 122: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/122.jpg)
Types of Binary Trees
• Full: Every node has 2 children (except for leaves)
• Complete: Every level is as filled up as much as possible except possibly the bottom-most level, where all nodes are as left as possible
• Balanced: Height of left and right subtree of every node differ by at most 1
![Page 123: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/123.jpg)
Full Binary Tree
1
2 3
6 7
![Page 124: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/124.jpg)
Complete Binary Tree
1
2 3
4 5 6
![Page 125: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/125.jpg)
Balanced Binary Tree
1
2 3
4 6 7
![Page 126: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/126.jpg)
Binary Search Trees
• Invariants:
– No nodes with duplicate keys
– At each node, every node in the left subtree has key less than the current node’s key
– At each node, every node in the right subtree has key greater than the current node’s key
– Subtrees rooted at each node’s children must also be binary search trees
![Page 127: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/127.jpg)
BST Example
3
2 5
1 4 6
![Page 128: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/128.jpg)
NOT A BST!
3
2 6
5 7 1 4
![Page 129: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/129.jpg)
Binary Search Tree
• If reasonably well-balanced, searching for a key in a binary search tree takes 𝑂 log 𝑛 for a tree with 𝑛 nodes
![Page 130: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/130.jpg)
Inorder traversal of this BST?
4
2 6
5 7 1 3
![Page 131: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/131.jpg)
Trie
• Each node’s key is determined by keys of all nodes in path from root
• Useful as a dictionary for storing words!
![Page 132: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/132.jpg)
Trie Example
_
c t
ca to tw
can cap cat two too
![Page 133: CS61BL - University of California, Berkeleygamescrafters.berkeley.edu/~cs61bl/su14/assets/lectures/lecture3.pdf · Story time •Simplex algorithm –Developed by George Dantzig of](https://reader034.fdocuments.in/reader034/viewer/2022042306/5ed251b6d4301240503b3efe/html5/thumbnails/133.jpg)
See you tonight (maybe)