Пример #1
0
def test_valid():
    print('{}'.format('-' * 20))
    print('Testing BST.valid:\n')

    bst = BST()
    print('bst = {}'.format(bst.inorder()))
    print('bst.valid() = {}'.format(bst.is_valid()))
    print()

    bst = get_bst()
    print('bst = {}'.format(bst.inorder()))
    print('bst.valid() = {}'.format(bst.is_valid()))
    print()

    print('change bst property (change 19 to 29):')
    bst._root._left._right._data = 29
    print('bst = {}'.format(bst.inorder()))
    print('bst.valid() = {}'.format(bst.is_valid()))
    print()

    print('change bst property (change 38 to 48):')
    bst._root._left._right._data = 19
    bst._root._right._right._left._data = 48
    print('bst = {}'.format(bst.inorder()))
    print('bst.valid() = {}'.format(bst.is_valid()))
    print()

    print('End of BST.valid testing')
    print('{}\n'.format('-' * 20))
    return
Пример #2
0
def test_new_tree():
    from bst import BST
    new_bst = BST()
    new_bst.insert(100)
    new_bst.insert(25)
    new_bst.insert(30)
    new_bst.insert(40)
    assert [x for x in new_bst.inorder(new_bst.head)] == [25, 30, 40, 100]
Пример #3
0
def test_inorder():
    nums = range(1, 200)
    random.shuffle(nums)
    bst = BST()
    for n in nums:
        bst.add(n)
    nums.sort()

    assert bst.inorder() == sorted(nums)
Пример #4
0
def test_property2():
    print('{}'.format('-' * 20))
    print('Testing BST.property2:\n')

    bst = BST()
    print('bst = {}'.format(bst.inorder()))
    print('Satisfy Property 2? = {}'.format(bst.satisfy_property2()))
    print()

    cases = [25, 13, 11, 19, 35, 20, 40, 33, 18]
    for case in cases:
        bst.insert(case)
        print('bst = {}'.format(bst.inorder()))
        print('Satisfy Property 2? = {}'.format(bst.satisfy_property2()))
        print()

    print('End of BST.property2 testing')
    print('{}\n'.format('-' * 20))
    return
Пример #5
0
def test_equal():
    print('{}'.format('-' * 20))
    print('Testing BST equal operator:\n')

    bst1 = BST()
    bst2 = BST()
    print('bst1 = {}'.format(bst1.inorder()))
    print('bst2 = {}'.format(bst2.inorder()))
    print('bst1 == bst2? {}'.format(bst1 == bst2))
    print()

    bst1.insert(25)
    bst1.insert(30)
    bst2.insert(25)
    bst2.insert(30)
    bst2.insert(40)
    print('bst1 = {}'.format(bst1.inorder()))
    print('bst2 = {}'.format(bst2.inorder()))
    print('bst1 == bst2? {}'.format(bst1 == bst2))
    print()

    bst1 = get_bst()
    bst2 = get_bst()
    print('bst1 = {}'.format(bst1.inorder()))
    print('bst2 = {}'.format(bst2.inorder()))
    print('bst1 == bst2? {}'.format(bst1 == bst2))
    print()

    bst2.remove(32)
    print('bst1 = {}'.format(bst1.inorder()))
    print('bst2 = {}'.format(bst2.inorder()))
    print('bst1 == bst2? {}'.format(bst1 == bst2))
    print()

    bst1.remove(20)
    print('bst1 = {}'.format(bst1.inorder()))
    print('bst2 = {}'.format(bst2.inorder()))
    print('bst1 == bst2? {}'.format(bst1 == bst2))
    print()

    print('End of BST equality operator testing testing')
    print('{}\n'.format('-' * 20))
    return
Пример #6
0
def bstsort(l):
    arbol = BST()
    # Generamos nuestra estructura 
    # de datos auxiliar
    
    while l:
        # Vaciamos la lista en el arbol
        item = l.pop()
        arbol.add(item)
    
    l.extend(arbol.inorder())
Пример #7
0
def test_reflect():
    print('{}'.format('-' * 20))
    print('Testing BST.reflect_vertical:\n')
    print('Note: printing using inorder')

    bst = BST()
    print('bst1 = {}'.format(bst.inorder()))
    bst2 = bst.reflect_vertical()
    print('bst2 = {}'.format(bst2.inorder()))
    print()

    cases = [25, 13, 35, 11, 40, 19, 20, 18]
    for case in cases:
        bst.insert(case)
        print('bst1 = {}'.format(bst.inorder()))
        bst2 = bst.reflect_vertical()
        print('bst2 = {}'.format(bst2.inorder()))
        print()

    print('End of BST.reflect vertical testing')
    print('{}\n'.format('-' * 20))
    return
Пример #8
0
from bst import BST
if __name__ == '__main__':
    t = BST() # 이진탐색트리 객체 t 생성
    t.put(500, 'apple')
    t.put(600, 'banana')
    t.put(200, 'melon')
    t.put(100, 'orange')
    t.put(400, 'lime')
    t.put(250, 'kiwi')
    t.put(150, 'grape')
    t.put(800, 'peach')
    t.put(700, 'cherry')
    t.put(50,  'pear')
    t.put(350, 'lemon')
    t.put(10,  'plum')
    print('전위순회:\t', end='')
    t.preorder(t.root)
    print('\n중위순회:\t', end='')
    t.inorder(t.root)
    print('\n250: ',t.get(250))
    t.delete(200)
    print('200 삭제 후:')
    print('전위순회:\t', end='')
    t.preorder(t.root)
    print('\n중위순회:\t', end='')
    t.inorder(t.root)
from bst import BST, Node

def sorted_array_to_bst(array):
	return _sorted_array_to_bst(array, 0, len(array)-1)

def _sorted_array_to_bst(array, left, right):
	if left == right:
		return Node(array[left])
	if left > right:
		return None

	mid = (left + right) / 2
	root = Node(array[mid])
	root.left = _sorted_array_to_bst(array, left, mid-1)
	root.right = _sorted_array_to_bst(array, mid+1, right)
	return root

if __name__ == "__main__":
	array = [0, 1, 2, 3, 4, 5]
	tree = BST(sorted_array_to_bst(array))
	tree.inorder()
Пример #10
0
def test_init_empty():
    t = BST()
    assert t.inorder() == []
def createConcordance(inputFile, stopWords, outputFile):

    #declare data structures
    stopSet = HashSet(3500)
    dictionary = HashDictionary(10000)
    bst = BST()

    #declare regular expressions
    newLine = re.compile(r'\n')
    exprSpaces = re.compile(r'\s')
    dhyp = re.compile('--')
    notChars = re.compile('\W|-')
    
    #populate hashset with stop words
    stopWords = open(stopWords, 'r')
    for stop in stopWords:
        x = newLine.search(stop)
        stop = stop[:x.start()]
        if stop == "":
            break
        stopSet.add(stop)
    stopWords.close()
    
    #open the input and process into words
    f = open(inputFile, 'r')
    lineNum = 0
    while True:
        line = f.readline()
        lineNum += 1
        if line == "":
            break

        #split lines
        m = dhyp.split(line)
        alist = []
        for i in range(len(m)):
            g = exprSpaces.split(m[i])
            alist = alist + g
            
        #strip down to words
        print alist
        for word in alist:
            if word == None:
                pass
            else:
                word = string.lower(word)
                while True:
                    n = notChars.search(word)
                    if len(word) <= 0:
                        break
                    elif n != None:
                        if n.start() == 0:
                            word = word[n.end():]
                        else:
                            word = word[:n.start()]
                    else:
                        break
                            
                #check if word is stop word
                if not stopSet.contains(word) and len(word) > 0:
                    #if word isn't already in dictionary
                    if dictionary.search(word) == None:
                        linkedValue = LinkedIndexedList()
                        dictionary.store(word, linkedValue)
                        dictionary.search(word).append(lineNum)
                        bst.add(word)
                    #if the word is in the dictionary
                    else:
                        dictionary.search(word).append(lineNum)
    f.close()

    #open output and use BST to print out words
    #   in alphabetical order
    output = open(outputFile, 'w')
    lyst = bst.inorder()
    temp = None
    for item in lyst:
        temp = dictionary.search(item)
        output.write(item + " - " + str(temp)+"\n")
    output.close()
Пример #12
0
from bst import BST
from bst import Node

if __name__ == "__main__":
	root = Node(5)
	bst = BST()
	bst.insert(root, Node(2))
	bst.insert(root, Node(3))
	bst.insert(root, Node(4))
	print "Inorder traversal"
	bst.inorder(root)
	print "Preorder traversal"
	bst.preorder(root)
	print "Postorder traversal"
	bst.postorder(root)
Пример #13
0
class TestBST(unittest.TestCase):
	def setUp(self):
		self.bst = BST()
	def test_insert(self):
		self.assertEqual([], self.bst.inorder())
		self.assertEqual(True, self.bst.insert(5))
		self.assertEqual(False, self.bst.insert(5))
		self.assertEqual([5], self.bst.inorder())
		self.assertEqual(True, self.bst.insert(4))
		self.assertEqual([4,5], self.bst.inorder())
		self.assertEqual(True, self.bst.insert(7))
		self.assertEqual([4,5,7], self.bst.inorder())
	def test_find(self):
		self.assertEqual(False, self.bst.find(5))
		self.bst.insert(5)
		self.assertEqual(True, self.bst.find(5))
		self.assertEqual(False, self.bst.find(12))
		self.bst.insert(12)
		self.assertEqual(True, self.bst.find(5))
		self.assertEqual(True, self.bst.find(12))
		self.bst.remove(12)
		self.assertEqual(True, self.bst.find(5))
		self.assertEqual(False, self.bst.find(12))
		self.bst.remove(5)
		self.assertEqual(False, self.bst.find(5))
	def test_remove_1(self):
		# Empty tree
		self.assertEqual(False, self.bst.remove(5))
	def test_remove_2_1(self):
		# Value in root
		# 2.1 Leaf node
		self.bst.insert(5)
		self.assertEqual(True, self.bst.remove(5))
		self.assertEqual([], self.bst.inorder())
	def test_remove_2_2(self):	
		# 2.2 Left chilid only
		self.bst.insert(5)
		self.bst.insert(4)
		self.bst.insert(3)
		self.assertEqual(5, self.bst.root.data)
		self.assertEqual([3,4,5], self.bst.inorder())
		self.assertEqual(True, self.bst.remove(5))
		self.assertEqual([3, 4], self.bst.inorder())
		self.assertEqual(4, self.bst.root.data)
	def test_remove_2_3(self):
		# 2.3 Right child only
		self.bst.insert(5)
		self.bst.insert(7)
		self.bst.insert(6)
		self.assertEqual(5, self.bst.root.data)
		self.assertEqual([5,6,7], self.bst.inorder())
		self.assertEqual(True, self.bst.remove(5))
		self.assertEqual([6,7], self.bst.inorder())
		self.assertEqual(7, self.bst.root.data)
	def test_remove_2_4(self):
		# 2.4 Both children
		self.bst.insert(5)
		self.bst.insert(4)
		self.bst.insert(8)
		self.bst.insert(7)
		self.bst.insert(6)
		self.assertEqual(5, self.bst.root.data)
		self.assertEqual([4,5,6,7,8], self.bst.inorder())
		self.assertEqual(True, self.bst.remove(5))
		self.assertEqual([4, 6, 7, 8], self.bst.inorder())
		self.assertEqual(6, self.bst.root.data)
	def test_remove_3(self):
		# Value not in tree
		self.bst.insert(5)
		self.bst.insert(4)
		self.bst.insert(8)
		self.bst.insert(7)
		self.bst.insert(6)
		self.assertEqual(False, self.bst.remove(100))
	def test_remove_4(self):
		# Node is leaf
		self.bst.insert(5)
		self.bst.insert(4)
		self.assertEqual(True, self.bst.remove(4))
		self.assertEqual([5], self.bst.inorder())
	def test_remove_5(self):
		# Node has left child only
		self.bst.insert(5)
		self.bst.insert(4)
		self.bst.insert(8)
		self.bst.insert(7)
		self.bst.insert(6)
		self.assertEqual(True, self.bst.remove(8))
		self.assertEqual([4,5,6,7], self.bst.inorder())
		self.assertEqual(7, self.bst.root.right.data)
	def test_remove_6(self):
		# Node has right child only
		self.bst.insert(5)
		self.bst.insert(3)
		self.bst.insert(4)
		self.assertEqual(True, self.bst.remove(3))
		self.assertEqual([4,5], self.bst.inorder())
		self.assertEqual(4, self.bst.root.left.data)
	def test_remove_7(self):
		# Node has left and right child
		self.bst.insert(5)
		self.bst.insert(3)
		self.bst.insert(4)
		self.bst.insert(1)
		self.assertEqual(True, self.bst.remove(3))
		self.assertEqual([1,4,5], self.bst.inorder())
		self.assertEqual(4, self.bst.root.left.data)
	def test_preorder(self):
		self.bst.insert(5)
		self.bst.insert(4)
		self.bst.insert(8)
		self.bst.insert(7)
		self.bst.insert(6)
		self.bst.insert(9)
		self.assertEqual([5,4,8,7,6,9], self.bst.preorder())
	def test_postorder(self):
		self.bst.insert(5)
		self.bst.insert(4)
		self.bst.insert(8)
		self.bst.insert(7)
		self.bst.insert(6)
		self.bst.insert(9)
		self.assertEqual([4,6,7,9,8,5], self.bst.postorder())
	def test_inorder(self):
		self.bst.insert(5)
		self.bst.insert(4)
		self.bst.insert(8)
		self.bst.insert(7)
		self.bst.insert(6)
		self.bst.insert(9)
		self.assertEqual([4,5,6,7,8,9], self.bst.inorder())
Пример #14
0
def main():
    bst = BST()
    bst.add(3)
    bst.add(7)
    bst.add(1)
    bst.inorder()
Пример #15
0
def main():
    nums = ["5", "3", "1", "6", "2", "8", "0", "9", "7", "4"]
    newBST = BST(list_of_objects = nums)
    newBST.inorder()
Пример #16
0
def test_init_list():
    nums = range(0, 10)
    t = BST(keys=nums)
    assert t.inorder() == nums
Пример #17
0
def tree_sort(A):
    tree = BST()
    for i in A:
        tree.insert(Node(i))

    tree.inorder(tree.root)
Пример #18
0
def test_unique_queue():
    BST(keys=[1])
    t = BST(keys=[2])
    assert t.inorder() == [2]