DOC PREVIEW
Berkeley COMPSCI 61A - Lecture 11

This preview shows page 1-2-16-17-18-33-34 out of 34 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 34 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CS61A Lecture 11Clicker poll Tree recursionIs this tree-recursion?Slide 5calc-evalRepresenting Math in SchemeCapital-T TreePowerPoint PresentationTry IT!Slide 11Tree constructors & selectorschildrenSlide 14Slide 15Treemaptreemapforest-mapSlide 19Slide 20deep-map(deep-map sq ‘((3 . 4) (5 6))deep-map solutionSlide 24treemap and forest-mapforest-map using maptreeaddtreeadd and forest-adddeep-addModify to become deep-addDraw the treeSolution treeadd & forest-addSOLUTION deep-addSOLUTION Draw the treeCS61A Lecture 112011-07-07Colleen LewisClicker poll  What do you think of the pace of lecture?A)Too slowB)A little slowC)About rightD)A little fastE)Too fastTree recursion•A procedure in which each invocation makes more than one recursive callIs this tree-recursion?(define (fib n) (if (< n 2) 1 (+ (fib (- n 1))(fib (- n 2)))))A) Yes B) No C)??Is this tree-recursion?(define (filter pred seq) (cond((null? Seq) ‘())((pred (car seq)) (cons (car seq) (filter pred (cdr seq))))(else (filter pred (cdr seq)))))A) Yes B) No C)??calc-eval(define (calc-eval exp) (cond ((number? exp) exp) ((list? exp) (calc-apply (car exp) (map calc-eval (cdr exp)))) (else (error “Calc: bad exp”))))Is this tree-recursion?A) Yes B) No C)??Representing Math in Scheme(+ (* 2 4) 5)car: + cdr: ((* 2 4) 5)Capital-T Tree•Abstract Data Type•Not defined in the book•The book calls any deep-list a “tree”. –Lower-case-t tree (book) is different than Capital-T TreeRepresenting Trees in Scheme(World (N-America) (Antarctica))car: World cdr: ((N-America) (Antarctica))Extra set of parensTry IT! (World (N-America(US)(Canada)(Mexico)) (Antarctica))car: World cdr: ((N-America(US)(Canada)(Mexico)) (Antarctica))How many open parens?A) 3 B) 4 C) 5 D) 6 E) 7Representing Trees in Scheme(World (N-America) (Antarctica))datum: World children:((N-America) (Antarctica))List of trees (forest)root nodeleaf (no children)Tree constructors & selectors(define (make-tree data children)(cons data children))(define (datum Tree)(car Tree))(define (children Tree)(cdr Tree))children•What type of thing is (children tree)? A)List of ListsB)List of TreesC)List of treesD)ListE)??CONSTRUCTING Trees in Schemedatum: World children:((N-America) (Antarctica))(make-tree ‘World(list (make-tree ‘N-America ‘())(make-tree ‘Antarctica ‘())))Try IT! (make-tree ‘World (list(make-tree‘N-America(list (make-tree ‘US ‘()) (make-tree ‘Canada ‘()) (make-tree ‘Mexico ‘())))(make-tree ‘Antarctica ‘())))How many calls to make-tree?A) 3 B) 4 C) 5 D) 6 E) 7TreemapSTk>(define t1 (make-tree 3 ‘())t1STk>(datum t1)3STk>(children t1)()STk>(define t2 (treemap square t1))t2STk>(datum t2)9treemapIf TREE is the tree to the right, what call to treemap will create the below?A.(treemap (λ(x) (length(datum x)) TREE)B.(treemap length TREE)C.(treemap count TREE)D.(treemap (λ(x) (count (datum x)) TREE)forest-map(define (forest-map fn forest) •What type of thing is a forest? A)List of ListsB)List of TreesC)List of treesD)ListE)??Write it without calling map! It should call treemap on each treeforest-map(define (forest-map fn forest) (if (null? forest)‘()(cons(treemap fn (car forest))(forest-map fn (cdr forest)))))Is using cons, car & cdr a data abstraction violation (DAV)? A) Yes B) No C) It dependsforest-map(define (forest-map fn forest) •What type of thing is a forest? A)List of ListsB)List of TreesC)List of treesD)ListE)??deep-mapREVIEW(deep-map sq ‘((3 . 4) (5 6))car cdrcar cdr3car cdr4car cdr6car cdr5car cdr??(cons (deep-map fn (car arg)) (deep-map fn (cdr arg)))deep-map solution(define (deep-map fn arg) (cond ((null? arg) '())((pair? arg) (cons (deep-map fn (car arg)) (deep-map fn (cdr arg))))(else (fn arg))))treemap(define (treemap fn tree) (make-tree (fn (datum tree))(forest-map fn (children tree))))treemap and forest-map(define (treemap fn tree) (make-tree (fn (datum tree))(forest-map fn (children tree))))(define (forest-map fn forest) (if (null? forest)‘()(cons(treemap fn (car forest))(forest-map fn (cdr forest)))))Mutual recursionWhy don’t we need a base case in treemap?forest-map using map(define (forest-map fn forest) (map (lambda (one-tree)(tree-map fn one-tree))forest))treeaddSTk>(define kid1 (make-tree 3 ‘())STk>(define kid2 (make-tree 4 ‘())STk>(define parent (make-tree ‘5 (list kid1 kid2))STk>(treeadd parent)12treeadd and forest-add(define (treeadd tree) (make-tree (datum tree)(forest-add (children tree))))(define (forest-add forest) (if (null? forest)‘()(cons(treeadd (car forest))(forest-add (cdr forest)))))Modify forest-addto return the sum of all trees in the forestModify treeaddto return the sum of the treesdeep-addSTk> (deep-add 3)3STk>(deep-add ‘())0STk>(deep-add ‘( 1 2 3))6STk>(deep-add ‘((1 2) (3 . 2) 1))9Modify to become deep-add(define (deep-add fn arg) (cond ((null? arg) '())((pair? arg) (cons (deep-add fn (car arg)) (deep-add fn (cdr arg))))(else (fn arg))))Draw the tree(define a (make-tree 2 '()))(define b (make-tree 3 '()))(define c (make-tree 5 (list a b)))(define d (make-tree 1 (list c)))Solution treeadd & forest-add(define (treeadd tree) (+ (datum tree) (forest-add (children tree))))(define (forest-add forest) (if (null? forest) 0 (+ (treeadd (car forest)) (forest-add (cdr forest)))))SOLUTION deep-add(define (deep-add arg) (cond ((null? arg) 0) ((pair? arg) (+ (deep-add (car arg)) (deep-add (cdr arg)))) (else arg)))SOLUTION Draw the tree(define a (make-tree 2 '()))(define b (make-tree 3 '()))(define c (make-tree 5 (list a b)))(define d (make-tree 1 (list


View Full Document

Berkeley COMPSCI 61A - Lecture 11

Documents in this Course
Lecture 1

Lecture 1

68 pages

Midterm

Midterm

5 pages

Midterm

Midterm

6 pages

Lecture 35

Lecture 35

250 pages

Lecture 14

Lecture 14

125 pages

Lecture 2

Lecture 2

159 pages

Lecture 6

Lecture 6

113 pages

Lecture 3

Lecture 3

162 pages

Homework

Homework

25 pages

Lecture 13

Lecture 13

117 pages

Lecture 29

Lecture 29

104 pages

Lecture 11

Lecture 11

173 pages

Lecture 7

Lecture 7

104 pages

Midterm

Midterm

6 pages

Midterm

Midterm

6 pages

Lecture 8

Lecture 8

108 pages

Lab 4

Lab 4

4 pages

Lecture 7

Lecture 7

52 pages

Lecture 20

Lecture 20

129 pages

Lecture 15

Lecture 15

132 pages

Lecture 9

Lecture 9

95 pages

Lecture 30

Lecture 30

108 pages

Lecture 17

Lecture 17

106 pages

Load more
Download Lecture 11
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture 11 and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 11 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?