Difference between revisions of "Binary Search Tree Assignment"

From CSE425S Wiki
Jump to navigation Jump to search
Line 6: Line 6:
  
 
=Code To Implement=
 
=Code To Implement=
<nowiki>binary_tree/binary_tree.sml</nowiki>
+
* binary_tree/binary_tree.sml
 +
* binary_tree/apps_using_binary_tree.sml
  
==Utilities==
+
 
===max_height===
+
==BinaryTree==
fun max_height(t : 'a tree) : int =
 
    raise NotYetImplemented
 
  
 
===map===
 
===map===
Line 39: Line 38:
  
 
==Application==
 
==Application==
 +
===max_height===
 +
fun max_height(t : 'a BinaryTree.tree) : int =
 +
  raise NotYetImplemented
 
===sum_int_tree===
 
===sum_int_tree===
  fun sum_int_tree(t : int tree) : int =
+
  fun sum_int_tree(t : int BinaryTree.tree) : int =
    raise NotYetImplemented
+
  raise NotYetImplemented
  
 
=Testing=
 
=Testing=
 
studioTree/unittest_tree.sml
 
studioTree/unittest_tree.sml

Revision as of 17:00, 21 February 2020

We will build some of the Higher Order Function Hall of Fame inductees but for a tree datatype.

datatype 'a tree = LEAF | BRANCH of 'a tree * 'a * 'a tree

Sorted binary tree inorder

Code To Implement

  • binary_tree/binary_tree.sml
  • binary_tree/apps_using_binary_tree.sml


BinaryTree

map

reference: List.map

fun map(f : 'a -> 'b, t : 'a tree) : 'b tree = 
    raise NotYetImplemented

filter

reference: List.filter

fun filter(predicate : 'a -> bool, t : 'a tree) : 'a tree = 
    raise NotYetImplemented

find_lnr

reference: List.find

reference: In-order traversal

fun find_lnr(predicate : 'a -> bool, t : 'a tree) : 'a option =
    raise NotYetImplemented

fold_lnr

reference: List.foldl

reference: In-order traversal

fun fold_lnr(f : 'a * 'b -> 'b, init : 'b, t : 'a tree ) : 'b = 
    raise NotYetImplemented

Application

max_height

fun max_height(t : 'a BinaryTree.tree) : int = 
 	raise NotYetImplemented

sum_int_tree

fun sum_int_tree(t : int BinaryTree.tree) : int =
 	raise NotYetImplemented

Testing

studioTree/unittest_tree.sml