Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

'''Provides basic operations for Binary Search Trees using a tuple representation. In this representation, a BST is either an empty tuple or a length-3 tuple

'''Provides basic operations for Binary Search Trees using a tuple representation. In this representation, a BST is either an empty tuple or a length-3 tuple consisting of a data value, a BST called the left subtree and a BST called the right subtree ''' Needs to me implemented in Python

def is_bintree(T): if type(T) is not tuple: return False if T == (): return True if len(T) != 3: return False if is_bintree(T[1]) and is_bintree(T[2]): return True return False

def bst_min(T): if T == (): return None if not T[1]: return T[0] return bst_min(T[1]) def bst_max(T): if T == (): return None if not T[2]: return T[0] return bst_max(T[2]) def is_bst(T): if not is_bintree(T): return False

if T == (): return True

if not is_bst(T[1]) or not is_bst(T[2]): return False if T[1] == () and T[2] == (): return True if T[2] == (): return bst_max(T[1]) < T[0] if T[1] == (): return T[0] < bst_min(T[2]) return bst_max(T[1]) < T[0] < bst_min(T[2]) def bst_search(T,x): if T == (): return T if T[0] == x: return T if x < T[0]: return bst_search(T[1],x) return bst_search(T[2],x)

def bst_insert(T,x): if T == (): return (x,(),()) elif x < T[0]: return (T[0],bst_insert(T[1],x),T[2]) else: return (T[0],T[1],bst_insert(T[2],x))

def delete_min(T): if T == (): return T if not T[1]: return T[2] else: return (T[0],delete_min(T[1]),T[2])

def bst_delete(T,x): assert T, "deleting value not in tree" if x < T[0]: return (T[0],bst_delete(T[1],x),T[2]) elif x > T[0]: return (T[0],T[1],bst_delete(T[2],x)) else: # T[0] == x if not T[1]: return T[2] elif not T[2]: return T[1] else: return (bst_min(T[2]),T[1],delete_min(T[2]))

def print_bintree(T,indent=0): if not T: print('*') return else: print(T[0]) print(' '*(indent + len(T[0])-1)+'---', end = '') print_bintree(T[1],indent+3) print(' '*(indent + len(T[0])-1)+'---', end = '') print_bintree(T[2],indent+3) def print_func_space(x): print(x,end=' ')

def inorder(T,f): if not is_bst(T): return if not T: return inorder(T[1],f) f(T[0]) inorder(T[2],f)

# Programming project: provide implementations for the functions below, # i.e., replace all the pass statements in the functions below. # Then add tests for these functions in the block # that starts "if __name__ == '__main__':"

def preorder(T,f): pass

def postorder(T,f): pass

def tree_height(T): # Empty tree has height -1 pass

def balance(T): # returns the height of the left subtree of T # minus the height of the right subtree of T # i.e., the balance of the root of T pass

def minBalance(T): # returns the minimum value of balance(S) for all subtrees S of T pass

def maxBalance(T): # returns the maximum value of balance(S) for all subtrees S of T pass

def is_avl(T): # Returns True if T is an AVL tree, False otherwise # Hint: use minBalance(T) and maxBalance(T) pass

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Database Development For Dummies

Authors: Allen G. Taylor

1st Edition

978-0764507526

More Books

Students also viewed these Databases questions

Question

What are the Five Phases of SDLC? Explain each briefly.

Answered: 1 week ago

Question

How can Change Control Procedures manage Project Creep?

Answered: 1 week ago