
Database System Concepts
7th Edition
ISBN: 9780078022159
Author: Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher: McGraw-Hill Education
expand_more
expand_more
format_list_bulleted
Concept explainers
Question
F# Exercise, BST
write the following binary search tree functions in F# for a binary search tree of integers. Use the following type definition for a BST (copy this into your solution):
F# system functions (such as min) and the method in the List module such as List.map. are not allowed
// Tree definition for problem:
type BST =
| Empty
| TreeNode of int * BST * BST
- insert value tree: Inserts the value into the tree and returns the resulting tree. The resulting tree does NOT need to be balanced. If the value already exists in the tree, return the tree without inserting the value.
- search value tree: Returns true if the value is in the tree and false otherwise.
- count func tree: The parameter func is a Boolean function that takes a single parameter and returns true or false. The function tests the value of each node with func and returns the number of nodes that evaluate to true.
- evenCount tree: Returns the number of nodes that contain even integers. REQUIREMENT: This function must be a single call to count (part 3C) using a lambda function.
Examples:
> let bt1 = insert 10 Empty;;
val bt1 : BST = TreeNode (10, Empty, Empty)
> let bt2 = insert 5 bt1;;
val bt2 : BST = TreeNode (10, TreeNode (5, Empty, Empty), Empty)
> let bt3 = insert 3 bt2;;
val bt3 : BST =
TreeNode (10, TreeNode (5, TreeNode (3, Empty, Empty), Empty), Empty)
> let bt4 = insert 17 bt3;;
val bt4 : BST =
TreeNode
(10, TreeNode (5, TreeNode (3, Empty, Empty), Empty), TreeNode (17, Empty, Empty))
> let bt5 = insert 12 bt4;;
val bt5 : BST =
TreeNode
(10, TreeNode (5, TreeNode (3, Empty, Empty), Empty),
TreeNode (17, TreeNode (12, Empty, Empty), Empty))
> search 17 bt5;;
val it : bool = true
> search 4 bt5;;
val it : bool = false
> evenCount bt5;;
val it : int = 2
val bt1 : BST = TreeNode (10, Empty, Empty)
> let bt2 = insert 5 bt1;;
val bt2 : BST = TreeNode (10, TreeNode (5, Empty, Empty), Empty)
> let bt3 = insert 3 bt2;;
val bt3 : BST =
TreeNode (10, TreeNode (5, TreeNode (3, Empty, Empty), Empty), Empty)
> let bt4 = insert 17 bt3;;
val bt4 : BST =
TreeNode
(10, TreeNode (5, TreeNode (3, Empty, Empty), Empty), TreeNode (17, Empty, Empty))
> let bt5 = insert 12 bt4;;
val bt5 : BST =
TreeNode
(10, TreeNode (5, TreeNode (3, Empty, Empty), Empty),
TreeNode (17, TreeNode (12, Empty, Empty), Empty))
> search 17 bt5;;
val it : bool = true
> search 4 bt5;;
val it : bool = false
> evenCount bt5;;
val it : int = 2
Expert Solution

This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
This is a popular solution
Trending nowThis is a popular solution!
Step by stepSolved in 5 steps

Knowledge Booster
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.Similar questions
- Use C++ Programming language: Design and implement your own linked list class to hold a sorted list of integers in ascending order. The class should have member functions for inserting an item in the list (in ascending order), deleting an item from the list, and searching the list for an item. Note: the search function should return the position of the item in the list (first item at position 0) and -1 if not found. In addition, it should have member functions to display the list, check if the list is empty, and return the length of the list. Be sure to have a class constructor a class destructor, and a class copy constructor for deep copy. Demonstrate your class with a driver program (be sure to include the following cases: insertion at the beginning, end (note that the list should alway insert in ascending order. However, in your test include a case where the inserted item goes at the beginning of the list), and inside the list, deletion of first item, last item, and an item…arrow_forwardC++ program to delete each alternate node of a singly linked list. For Example: 1->2->3->4->5->6->7->8->NULL should be restructured to 1->3->5->7->NULL Note: use c++ solve as soon as possiblearrow_forwardC++arrow_forward
- Recursive Multiplication Given an JavaScript object list of books that each have a pages attribute to define the number of pages in the book, find the product of all the pages in the object list of books using recursion (you must use recursion to solve this problem). Keep in mind: The input list object may be completely empty (ex. {}) The next attribute may not be defined function getPageCount(list) {// your code here// returns an integer}Example test case:Input: {"book":"A","pages":1,"next":{"book":"B","pages":2,"next":{"book":"C","pages":3,"next": null}}}Output: 6Reasoning: 1 * 2 * 3 pagesarrow_forwardC++The List class represents a linked list of dynamically allocated elements. The list has only one member variable head which is a pointer that leads to the first element. See the following code for the copy constructor to List. List (const List & list) { for (int i = 0; i <list.size (); i ++) { push_back (list [i]); } } What problems does the copy constructor have? Select one or more options: 1. List (const List & list) {} does not define a copy constructor. 2. The list parameter should not be constant. 3. The new elements will be added to the wrong list. 4. Copy becomes shallow rather than deep. 5. The copy will create dangling pointers. 6. Copying will create memory leaks. 7. The condition must be: i <size () 8. head is never initialized.arrow_forwardstruct insert_at_back_of_sll { // Function takes a constant Book as a parameter, inserts that book at the // back of a singly linked list, and returns nothing. void operator()(const Book& book) { /// TO-DO (3) /// // Write the lines of code to insert "book" at the back of "my_sll". Since // the SLL has no size() function and no tail pointer, you must walk the // list looking for the last node. // // HINT: Do not attempt to insert after "my_sll.end()". // ///// END-T0-DO (3) ||||// } std::forward_list& my_sll; };arrow_forward
- Suppose a node of a doubly linked list is defined as follows: struct Node{ int data; struct Node* next; struct Node* prev; }; Write the function definition of the function deleteElement as presented below. This function deletes a node at position n from a doubly linked list. struct Node* deleteElement(struct Node* head, int n){ //write the function definition }arrow_forwardC++ PROGRAM: Please complete my program Implement the 4 functions: bool search(int num), bool insert(int num) , bool remove(int num), bool isEmpty bstree.h #include "tree.h"#include <iostream>using namespace std;class BSTree { BTree* tree; public: BSTree() { tree = new BTree(); } //////////////////////////////////////////////// bool search(int num) { }//////////////////////////////////////////////// bool insert(int num) { // TODO insert }//////////////////////////////////////////////// bool remove(int num) { // TODO remove }/////////////////////////////////////////////// // WARNING. Do not modify this method. void print() { if (isEmpty()) { cout << "EMPTY"; return; } cout << "PRE-ORDER: "; print_preorder(tree->getRoot()); cout << endl << "IN-ORDER: "; print_inorder(tree->getRoot()); cout << endl…arrow_forwardstruct node{int num;node *next, *before;};start 18 27 36 45 54 63 The above-linked list is made of nodes of the type struct ex. Your task is now to Write a complete function code to a. Find the sum of all the values of the node in the linked list. b. Print the values in the linked list in reverse order. Use a temporary pointer temp for a and b. i dont need a full code just the list partarrow_forward
- Write C code that implements a soccer team as a linked list. 1. Each node in the linkedlist should be a member of the team and should contain the following information: What position they play whether they are the captain or not Their pay 2. Write a function that adds a new members to this linkedlist at the end of the list.arrow_forwardC++ The List class represents a linked list of dynamically allocated elements. The list has only one member variable head which is a pointer that leads to the first element. See the following code for the destructor to List. ~ List () { for (int i = 0; i <size (); i ++) { pop_back (); } } What problems does the destructor have? Select one or more options: 1. There are no parameters for the destructor. 2. The return value from pop_back (if any) is nerver handled. 3. The destructor will create a stack overflow. 4. The destructor will create dangling pointers. 5.The destructor will create memory leaks. 6.The destructor will create undefined behavior (equivalent to zero pointer exception). 7.The condition must be: i <size () - 1 8. There is at least one problem with the destructor, but none of the above.arrow_forwardMake List Items Uppercase 2 in python Define the function make_uppercase(mylist), which takes a list parameter mylist (a list of strings), mutates the list by uppercasing each string in mylist. The function returns None. For example, if mylist is ['cat', 'Dog', 'frOG'], then the mutated list should be ['CAT', 'DOG', 'FROG']. For example: Test Result mylist = ['cat', 'Dog', 'frOG'] result = make_uppercase(mylist) print(mylist) if result != None: print("Error, return value should be None") ['CAT', 'DOG', 'FROG'] mylist = ['baNanas', 'appLes', 'pEAches', 'PEArs'] result = make_uppercase(mylist) print(mylist) if result != None: print("Error, return value should be None") ['BANANAS', 'APPLES', 'PEACHES', 'PEARS']arrow_forward
arrow_back_ios
arrow_forward_ios
Recommended textbooks for you
- Database System ConceptsComputer ScienceISBN:9780078022159Author:Abraham Silberschatz Professor, Henry F. Korth, S. SudarshanPublisher:McGraw-Hill EducationStarting Out with Python (4th Edition)Computer ScienceISBN:9780134444321Author:Tony GaddisPublisher:PEARSONDigital Fundamentals (11th Edition)Computer ScienceISBN:9780132737968Author:Thomas L. FloydPublisher:PEARSON
- C How to Program (8th Edition)Computer ScienceISBN:9780133976892Author:Paul J. Deitel, Harvey DeitelPublisher:PEARSONDatabase Systems: Design, Implementation, & Manag...Computer ScienceISBN:9781337627900Author:Carlos Coronel, Steven MorrisPublisher:Cengage LearningProgrammable Logic ControllersComputer ScienceISBN:9780073373843Author:Frank D. PetruzellaPublisher:McGraw-Hill Education

Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education

Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON

Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON

C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON

Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning

Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education