Esempio n. 1
0
def test_bst_right_setter_parent():
    """test that right child setter sets parent"""
    from bst import Node
    node1 = Node(7)
    node2 = Node(9)
    node1.right = node2
    assert node2.parent.val == node1.val
    def test_right(self):
        self.subject.root = Node(80)
        self.subject.root.right = Node(100)

        result = self.subject.traverse(mode='level_order')

        self.assertEqual([80, 100], result)
Esempio n. 3
0
def test_bst_parent_setter_parent_child_left():
    """test that parent setter sets child left properly"""
    from bst import Node
    node1 = Node(2)
    node2 = Node(1)
    node2.parent = node1
    assert node1.left.val == node2.val
    def test_left(self):
        self.subject.root = Node(80)
        self.subject.root.left = Node(30)

        result = self.subject.traverse(mode='level_order')

        self.assertEqual([80, 30], result)
Esempio n. 5
0
def test_bst_left_setter_child():
    """test that left child setter works"""
    from bst import Node
    node1 = Node(9)
    node2 = Node(7)
    node1.left = node2
    assert node1.left.val == node2.val
Esempio n. 6
0
def test_bst_parent_setter_child_parent():
    """test parent setter works properly"""
    from bst import Node
    node1 = Node(1)
    node2 = Node(2)
    node2.parent = node1
    assert node1.val == node2.parent.val
    def test_right(self):
        self.subject.root = Node(80)
        self.subject.root.right = Node(100)

        result = self.subject.traverse(mode='postorder')

        self.assertEqual([100, 80], result)
Esempio n. 8
0
def test_bst_right_setter_child():
    """test rigth child setter works"""
    from bst import Node
    node1 = Node(7)
    node2 = Node(9)
    node1.right = node2
    assert node1.right.val == node2.val
Esempio n. 9
0
    def test_right(self):
        self.subject.root = Node(100)
        self.subject.root.right = Node(150)

        result = self.subject.search(150)

        self.assertEqual(Node(150), result)
Esempio n. 10
0
    def test_left(self):
        self.subject.root = Node(100)
        self.subject.root.left = Node(50)

        result = self.subject.search(50)

        self.assertEqual(Node(50), result)
Esempio n. 11
0
    def test_height_one(self):
        self.subject.root = Node(5)
        self.subject.root.right = Node(8)

        result = self.subject.calculate_height()

        self.assertEqual(1, result)
    def test_left(self):
        self.subject.root = Node(80)
        self.subject.root.left = Node(30)

        result = self.subject.traverse(mode='postorder')

        self.assertEqual([30, 80], result)
    def test_right_subtree(self):
        self.subject.root = Node(3)
        self.subject.root.right = Node(4)
        self.subject.root.right.right = Node(5)

        result = self.subject.traverse(mode='level_order')

        self.assertEqual([3, 4, 5], result)
Esempio n. 14
0
def test_bst_del_right_child():
    """test deleter on right child"""
    from bst import Node
    node1 = Node(7)
    node2 = Node(9)
    node1.right = node2
    del node1.right
    assert node1.right is None
    def test_left_subtree(self):
        self.subject.root = Node(5)
        self.subject.root.left = Node(4)
        self.subject.root.left.left = Node(3)

        result = self.subject.traverse(mode='level_order')

        self.assertEqual([5, 4, 3], result)
Esempio n. 16
0
def test_bst_del_left_child():
    """test deleter on left child"""
    from bst import Node
    node1 = Node(9)
    node2 = Node(7)
    node1.left = node2
    del node1.left
    assert node1.left is None
Esempio n. 17
0
 def test_init(self):
     node1 = Node(5)
     node2 = Node(4)
     assert (node1.data == 5)
     assert (node1.left == None)
     assert (node1.right == None)
     assert (node2.data == 4)
     assert (node2.left == None)
     assert (node2.right == None)
    def test_uneven_tree(self):
        self.subject.root = Node(10)
        self.subject.root.left = Node(8)
        self.subject.root.right = Node(12)
        self.subject.root.left.right = Node(9)
        self.subject.root.right.left = Node(11)

        result = self.subject.traverse(mode='postorder')

        self.assertEqual([9, 8, 11, 12, 10], result)
    def test_uneven_tree(self):
        self.subject.root = Node(10)
        self.subject.root.left = Node(8)
        self.subject.root.right = Node(12)
        self.subject.root.left.right = Node(9)
        self.subject.root.right.left = Node(11)

        result = self.subject.traverse(mode='level_order')

        self.assertEqual([10, 8, 12, 9, 11], result)
Esempio n. 20
0
def main():
    one = Node(1, "")
    two = Node(2, "")
    three = Node(3, "")
    four = Node(4, "")
    five = Node(5, "")
    six = Node(6, "")
    seven = Node(7, "")
    eight = Node(8, "")
    nine = Node(9, "")

    one.left = two
    one.right = three

    two.left = four
    two.right = five

    four.left = six
    four.right = seven

    tree = Tree()
    tree.root = one
    tree.levelorder()
    inverted = upside_down(tree)
    inverted.levelorder()
Esempio n. 21
0
def main():
    one = Node(1, "")
    two = Node(2, "")
    three = Node(3, "")
    four = Node(4, "")
    five = Node(5, "")
    six = Node(6, "")
    seven = Node(7, "")
    eight = Node(8, "")
    nine = Node(9, "")

    one.left = two
    one.right = three

    two.left = four
    two.right = five

    three.left = six
    three.right = seven

    five.left = eight
    five.right = nine
    assert five is LCA(one, eight, nine)
    assert two is LCA(one, two, nine)
    assert one is LCA(one, two, seven)
    assert one is LCA(one, one, nine)
    assert four is LCA(one, four, four)
 def test_bst_isbinarysearchtree_recursive(self):
     bst = BinarySearchTree()
     bst.insert_recursive(14)
     bst.insert_recursive(11)
     bst.insert_recursive(7)
     bst.root.left.right = Node(15)
     assert_equal(False, bst.is_binary_search_tree())
Esempio n. 23
0
def test_node_object_has_value_and_left_right_are_none():
    """Test node constructure creates node with left and right children."""
    from bst import Node
    n = Node(5)
    assert n.value == 5
    assert n.left is None
    assert n.right is None
Esempio n. 24
0
def test_in():
    root = Node(1)
    root.insert(2)
    root.insert(3)
    assert (0 in root) == False
    assert (1 in root) == True
    assert (3 in root) == True
Esempio n. 25
0
def test_node_attributes_exist():
    """Test that node attributes are in Node class."""
    n = Node(1)
    assert n.val == 1
    assert n.left is None
    assert n.right is None
    assert n.depth == 0
Esempio n. 26
0
def test_node_has_value_and_left_right_have_value_when_given():
    """Test node node has value given and contains value for left and right."""
    from bst import Node
    n = Node(4, 3, 5)
    assert n.value == 4
    assert n.left == 3
    assert n.right == 5
Esempio n. 27
0
 def setUp(self):
     self.root = Node(5)
     self.root.insert(Node(1))
     self.root.insert(Node(4))
     self.root.insert(Node(8))
     self.root.insert(Node(11))
     self.root.insert(Node(0))
     self.root.insert(Node(12))
     self.root.insert(Node(-1))
Esempio n. 28
0
def test_find():
    root = Node(1)
    root.insert(2)
    root.insert(-5)
    assert root.find(1) is root
    assert root.find(100) is None
    assert root.find(2) is root.right
    assert root.find(-5) is root.left
Esempio n. 29
0
 def _create_min_bst(self, array, start, end):
     if end < start:
         return None
     mid = (start + end) // 2
     node = Node(array[mid])
     node.left = self._create_min_bst(array, start, mid - 1)
     node.right = self._create_min_bst(array, mid + 1, end)
     return node
Esempio n. 30
0
def main():
    complete_binary_tree = BST()
    one = Node(1)
    two = Node(2)
    three = Node(3)
    four = Node(4)
    five = Node(5)
    six = Node(6)
    seven = Node(7)

    one.left = two
    one.right = three
    two.left = four
    two.right = five
    three.left = six
    three.right = seven
    complete_binary_tree.root = one
    add_sibling_pointers(complete_binary_tree.root)
    nodes = list(complete_binary_tree.levelorder_nodes())

    # verify the next pointers
    assert one.next is None
    assert two.next is three
    assert three.next is None
    assert four.next is five
    assert five.next is six
    assert six.next is seven
    assert seven.next is None