Пример #1
0
 def test_false(self):
     bt = BinaryTree()
     for x in [4, 2, 6, 8, 1, 5]:
         bt.add(x)
     self.assertEqual(bt.contains(3), False)
     self.assertEqual(bt.contains(7), False)
     self.assertEqual(bt.contains(9), False)
Пример #2
0
 def test_true(self):
     bt = BinaryTree()
     for x in [4, 2, 6, 8, 1, 5]:
         bt.add(x)
     self.assertEqual(bt.contains(4), True)
     self.assertEqual(bt.contains(5), True)
     self.assertEqual(bt.contains(6), True)
     self.assertEqual(bt.contains(8), True)
Пример #3
0
    def test_add_to_tree(self):
        name = "Jose"
        value = 1

        node = Node(name, value)

        binary_tree = BinaryTree()

        binary_tree.add(node)

        self.assertEqual(binary_tree.get_root(), node)
Пример #4
0
    def test_find_in_tree(self):
        names = (("Jose", 2), ("Rolf", 1), ("Anna", 3))

        nodes = [Node(name, value) for name, value in names]

        binary_tree = BinaryTree()

        for node in nodes:
            binary_tree.add(node)

        for i in range(0, len(nodes)):
            self.assertEqual(binary_tree.find(nodes[i].value), nodes[i])
Пример #5
0
    def test_add_many_to_tree(self):
        names = (("Jose", 2), ("Rolf", 1), ("Anna", 3))

        nodes = [Node(name, value) for name, value in names]

        binary_tree = BinaryTree()

        for node in nodes:
            binary_tree.add(node)

        self.assertEqual(binary_tree.get_root(), nodes[0])
        self.assertEqual(binary_tree.get_root().get_left(), nodes[1])
        self.assertEqual(binary_tree.get_root().get_right(), nodes[2])
Пример #6
0
def test_binary_tree():
    b = BinaryTree()
    b.add(4)
    b.add(2)
    b.add(5)
    b.add(3)
    b.add(1)
    b.inorder()
Пример #7
0
from node import Node
from binary_tree import BinaryTree

tree = BinaryTree(Node(9))
tree.add(Node(5))
tree.add(Node(11))

tree.inorder()
tree.pre_order()
print(tree.find(11))
# print(tree.find(200)) -> LookUpError: A node with value 200 was not found.

print('--------')

tree = BinaryTree(Node(6))

nodes = [5, 3, 9, 7, 8, 7.5, 12, 11]

for n in nodes:
    tree.add(Node(n))

tree.delete(9)
tree.inorder()
tree.pre_order()
Пример #8
0
from binary_tree import BinaryTree
from node import Node

tree = BinaryTree(Node(6))

nodes = [5, 3, 9, 7, 8, 7.5, 12, 11]

for n in nodes:
    tree.add(Node(n))

tree.delete(9)
tree.inorder()

#######
from node import Node
left = Node(5)
head = Node(9)
right = Node(13)

head.left = left
head.right = right

print(head)
print(head.left)
print(head.right)
Пример #9
0
from node import Node
from binary_tree import BinaryTree

tree = BinaryTree(Node(6))

nodes = [5, 3, 9, 7, 8, 7.5, 12, 11]

for node in nodes:
    tree.add(Node(node))

tree.delete(9)
tree.inorder()
Пример #10
0
class TestBinaryTree(unittest.TestCase):
    def setUp(self) -> None:
        self.binary_tree = BinaryTree()

    def test_a_new_node_should_be_added_to_the_root_when_root_is_none(self):
        self.binary_tree.add(5)
        self.assertIsNotNone(self.binary_tree.root)
        self.assertIsInstance(self.binary_tree.root, Node)

    def test_a_new_node_should_not_be_added_to_the_root_when_it_is_not_none(
            self):
        self.binary_tree.add(5)
        self.binary_tree.add(3)
        self.assertEqual(self.binary_tree.root.data, 5)

    def test_a_new_node_should_be_added_to_right_when_left_is_not_none(self):
        self.binary_tree.add(5)
        self.binary_tree.root.insert_left(2)
        self.binary_tree.add(3)
        self.assertEqual(self.binary_tree.root.preorder_traversal(), [5, 2, 3])

    def test_a_new_node_should_be_added_to_left_when_right_is_not_none(self):
        self.binary_tree.add(5)
        self.binary_tree.root.insert_right(2)
        self.binary_tree.add(3)
        self.assertEqual(self.binary_tree.root.preorder_traversal(), [5, 3, 2])

    def test_a_new_node_should_be_added_to_next_level_when_left_and_right_already_filled(
            self):
        self.binary_tree.add(0)
        self.binary_tree.root.insert_right(1)
        self.binary_tree.root.insert_left(2)
        self.binary_tree.add(3)
        self.assertEqual(self.binary_tree.root.preorder_traversal(),
                         [0, 2, 1, 3])

    def test_right_node_should_be_filled_before_its_left_sibling(self):
        self.binary_tree.add(0)  # root
        self.binary_tree.add(1)  # root->right
        self.binary_tree.add(2)  # root->left
        self.binary_tree.add(3)  # root->right->right
        self.binary_tree.add(4)  # root->right->left
        self.binary_tree.add(5)  # root->left->right
        self.binary_tree.add(6)  # root->left->left
        self.binary_tree.add(7)  # root->right->right->right

        self.assertEqual(self.binary_tree.root.preorder_traversal(),
                         [0, 2, 6, 5, 1, 4, 3, 7])
Пример #11
0
from binary_tree import BinaryTree
from node import Node

bt = BinaryTree(Node(14))

# num_list = [5,6,30,99,100,60,10,4]
num_list = [9, 13, 22, 34]

num_str = [str(i) for i in num_list]

for i in num_list:
    bt.add(Node(i))

# bt.inorder()
#
# print(bt.find(99))
#
# bt.delete(99)
#
# bt.inorder()
#
# bt.delete(20)
#
bt.inorder()
bt.perorder()
bt.postorder()

# print("->".join(num_str))
Пример #12
0
from binary_tree import BinaryTree


if __name__ == '__main__':
    tree = BinaryTree()

    values = [5, 3, 2, 4, 7, 6, 8]

    #        5
    #      /   \
    #     3     7
    #    / \   / \
    #   2   4 6   8

    [tree.add(x) for x in values]

    print 'Input:',
    print ', '.join(str(x) for x in values)


    print '\nPrefixed.:',
    for node in tree.course_prefixed():
        print node.data,

    print
    print '\nInfixed..:',
    for node in tree.course_infixed():
        print node.data,

    print
    print '\nPostfixed:',
Пример #13
0
from binary_tree import BinaryTree

from datastructures.trees.binary_tree_traversal import BinaryTraversal

if __name__ == '__main__':
    tree = BinaryTree()
    tree.add(1)
    tree.add(2)
    tree.add(3)
    tree.add(4)
    tree.add(5)
    tree.add(6)
    tree.add(7)
    tree.add(8)
    tree.add(9)
    tree.add(10)
    tree.add(11)
    tree.add(12)
    tree.add(14)
    tree.add(15)
    tree.add(15)
    tree.add(17)
    tree.add(18)

    traversal = BinaryTraversal()
    print("Print level by Reverse Ordering")
    traversal.level_order(tree.root, reverse=True)
    print("\nPrint level by Natural Ordering")
    traversal.level_order(tree.root)
    print('\nHeight Of the Tree: ', traversal.height(tree.root))
    print("Deepest Node: ", traversal.deepest_by_level(tree.root))
Пример #14
0
print("Test Node")
left = Node(5)
head = Node(9)
right = Node(13)

head.left = left
head.right = right

print(head)
print(head.left)
print(head.right)

print("Test Tree")
tree = BinaryTree(Node(9))
tree.add(Node(5))
tree.add(Node(13))

# print(tree.head)
# print(tree.head.left)
# print(tree.head.right)

tree.print_inorder(tree.head)
tree.print_pretty()
print(tree.find_parent(5))
print(tree.find_parent(9))
print(tree.find_parent(13))
print(tree.find_parent(20))

print(tree.find_max(tree.head))
Пример #15
0
def demo():
    binary = BinaryTree()
    for i in range(count):
        binary.add(i)
    binary.dump()
Пример #16
0
    right_item = inorder(node.right)
    return left_item + res + right_item


def preorder(node):
    if node is None:
        return []
    res = [node.item]
    left_item = preorder(node.left)
    right_item = preorder(node.right)
    return res + left_item + right_item


def postorder(node):
    if node is None:
        return []
    res = [node.item]
    left_item = postorder(node.left)
    right_item = postorder(node.right)
    return left_item + right_item + res


if __name__ == '__main__':
    tree = BinaryTree()
    for i in range(10):
        tree.add(i)
    tree.show_tree()
    print('inorder:', inorder(tree.root))
    print('preorder:', preorder(tree.root))
    print('postorder:', postorder(tree.root))
Пример #17
0
# -*- coding: utf-8 -*-
# @Time    : 2017/12/20 下午10:29
# @Author  : KaWa
# @File    : tests.py
# @Project : python-libs
# @Copyright(c) 2017 By KaWa All rights reserved.

from binary_tree import BinaryTree

if __name__ == "__main__":
    tree = BinaryTree()
    tree.add(0)
    tree.add(1)
    tree.add(2)
    tree.add(3)
    tree.add(4)
    tree.add(5)
    tree.add(6)
    tree.add(7)
    tree.add(8)
    tree.add(9)
    tree.breadth_travel()
    print(" ")
    tree.preorder_travel(tree.root)
    print(" ")
    tree.inorder_travel(tree.root)
    print(" ")
    tree.postorder_travel(tree.root)
    print(" ")