61a lecture 19 announcements tree class tree review
play

61A Lecture 19 Announcements Tree Class Tree Review Nodes Path - PowerPoint PPT Presentation

61A Lecture 19 Announcements Tree Class Tree Review Nodes Path Root value 3 Values Branch 1 2 0 1 1 1 Leaf 0 1 Recursive description (wooden trees): Relative description (family trees): A tree has a root value and a list of


  1. 61A Lecture 19

  2. Announcements

  3. Tree Class

  4. Tree Review Nodes Path Root value 3 Values Branch 1 2 0 1 1 1 Leaf 0 1 Recursive description (wooden trees): Relative description (family trees): A tree has a root value and a list of branches Each location in a tree is called a node Each branch is a tree Each node has a value A tree with zero branches is called a leaf One node can be the parent / child of another 4

  5. Tree Class A Tree has a root value and a list of branches; each branch is a Tree class Tree: def tree(root, branches=[]): def __init__(self, root, branches=[]): for branch in branches: self.root = root assert is_tree(branch) for branch in branches: return [root] + list(branches) assert isinstance(branch, Tree) def root(tree): self.branches = list(branches) return tree[0] def branches(tree): return tree[1:] def fib_tree(n): def fib_tree(n): if n == 0 or n == 1: if n == 0 or n == 1: return Tree (n) return tree (n) else: else: left = fib_tree(n-2) left = fib_tree(n-2) right = fib_tree(n-1) right = fib_tree(n-1) fib_n = left .root + right .root fib_n = root (left) + root (right) return Tree (fib_n, [left, right]) return tree (fib_n, [left, right]) (Demo) 5

  6. Tree Mutation

  7. Example: Pruning Trees 3 Removing subtrees from a tree is called pruning Prune branches before 1 2 recursive processing 0 1 1 1 0 1 def prune(t, n): """Prune sub-trees whose root value is n.""" b b.root != n t.branches = [______________ for b in t.branches if _____________________] for b in t.branches: b n prune(_______________________________, _______________________________) (Demo) 7

  8. Example: Pruning Trees Removing subtrees from a tree is called pruning fib(5) Prune branches before recursive processing fib(3) fib(4) fib(1) fib(2) fib(2) fib(3) Memoization : fib(0) fib(1) 1 Returned by fib fib(0) fib(1) fib(1) fib(2) 0 1 Found in cache fib(0) fib(1) 0 1 1 Skipped 0 1 (Demo) 8

  9. Hailstone Trees

  10. Hailstone Trees Pick a positive integer n as the start If n is even, divide it by 2 1 If n is odd, multiply it by 3 and add 1 2 Continue this process until n is 1 4 (Demo) 8 def hailstone_tree(k, n=1): 16 """Return a Tree in which the paths from the leaves to the root are all possible hailstone 32 5 sequences of length k ending in n.""" 64 10 All possible n that start a 
 128 21 20 3 length-8 hailstone sequence (Demo) 10

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend