This preview has intentionally blurred sections. Sign up to view the full version.View Full Document
Unformatted text preview: CS 135 Winter 2011 Brad Lushman Assignment: 6 Due: Wednesday, March 9, 9:30am 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 2011 Assignment 6 1 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, 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. Inof a binary tree is the maximum distance from the root to a leaf, measured in nodes....
View Full Document
- Winter '07