{[ promptMessage ]}

Bookmark it

{[ promptMessage ]}

a06 - CS 135 Winter 2012 Brad Lushman Assignment 6 Due...

Info iconThis preview shows pages 1–3. Sign up to view the full content.

View Full Document Right Arrow Icon
CS 135 Winter 2012 Brad Lushman Assignment: 6 Due: Wednesday, March 7, 9:15am Language level: Beginning Student with List Abbreviations Allowed recursion: Pure structural Files to submit: bst.rkt , minimax.rkt , familytree.rkt Warmup exercises: HtDP 14.2.1, 14.2.2, 17.2.1, 17.3.1, 17.6.4, 17.8.3, 18.1.1, 18.1.2, 18.1.3, 18.1.4, 18.1.5 Practise exercises: HtDP 14.2.3, 14.2.6, 17.1.2, 17.2.2, 17.6.2, 17.8.4, 17.8.8, 18.1.5 Here are the assignment questions you need to submit. 1. Recall from lectures, the definition of a binary search tree: ( define-struct node ( key value left right )) ;; A binary search tree (BST) is one of ;; * empty ;; * a (make-node Num String BST BST), ;; where for each node (make-node k v l r), every node in the subtree ;; rooted at l has a key less than k, and every node in the subtree rooted ;; at r has a key greater than k. Write the function add-bst that consumes a binary search tree abst , a key k , and a value v . ( add-bst abst k v ) produces the binary search tree resulting from adding the key k , with value v to abst . If abst already contains the key k it should be updated so that it associates the key k with the value v , instead of whatever value used to be associated with k . Place your solution in the file bst.rkt . 2. Binary search trees are most useful for searching when every choice of search direction (left or right) eliminates about half of the remaining nodes. The degree to which this occurs depends on the shape of the tree. Trees that look mostly linear (i.e., trees with minimal branching) do not significantly speed up searching. On the other hand, “bushier” trees tend to speed up searches considerably. There are various ways to characterize trees that do tend to speed up searches. We will explore some of these in this problem. (a) A binary tree is called full if every node possesses either 0 or 2 children. Full trees by their very nature cannot be strictly linear. Write the Scheme function full? that consumes a binary search tree and produces true iff the given binary search tree is full. The empty tree, paradoxically, is considered full. (b) Although the fullness property of a binary tree does provide for maximum branching, by preventing any node from having exactly one child, this property alone does not CS 135 — Winter 2012 Assignment 6 1
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full Document Right Arrow Icon
guarantee particulary fast searches. Declare a constant bad-full-tree that encodes a full binary search tree on the numbers 1,2,3,4,5,6,7,8,9,10,11, with the maximum possible height. (The height of a tree is defined as the maximum number of nodes traversed from the root to a leaf.) (c) A binary tree is called perfect if it is full, and additionally if every leaf in the tree has the same depth (i.e., distance from the root). Equivalently, a tree is perfect if every node’s left subtree and right subtree have the same height. As noted above, the height of a binary tree is the maximum distance from the root to a leaf, measured in nodes. In particular, the empty tree has height 0, a single node has height 1, and, for example, the binary tree
Background image of page 2
Image of page 3
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}