Sha256: ed7d019afca67dfa4298d5662bc593c5f9dcde5e637431fa239f40d216b8b3a5

Contents?: true

Size: 1.49 KB

Versions: 71

Compression:

Stored size: 1.49 KB

Contents

class TreeNode(object):
    def __init__(self, data, left, right):
        self.data = data
        self.left = left
        self.right = right

    def __str__(self):
        fmt = 'TreeNode(data={}, left={}, right={})'
        return fmt.format(self.data, self.left, self.right)


class BinarySearchTree(object):
    def __init__(self, tree_data):
        self.root = None
        for data in tree_data:
            self.add(data)

    def add(self, data):
        if self.root is None:
            self.root = TreeNode(data, None, None)
            return
        inserted = False
        cur_node = self.root

        while not inserted:
            if data <= cur_node.data:
                if cur_node.left:
                    cur_node = cur_node.left
                else:
                    cur_node.left = TreeNode(data, None, None)
                    inserted = True
            elif data > cur_node.data:
                if cur_node.right:
                    cur_node = cur_node.right
                else:
                    cur_node.right = TreeNode(data, None, None)
                    inserted = True

    def _inorder_traverse(self, node, elements):
        if node is not None:
            self._inorder_traverse(node.left, elements)
            elements.append(node.data)
            self._inorder_traverse(node.right, elements)

    def data(self):
        return self.root

    def sorted_data(self):
        elements = []
        self._inorder_traverse(self.root, elements)
        return elements

Version data entries

71 entries across 71 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.179 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.178 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.177 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.176 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.175 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.174 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.173 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.172 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.171 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.170 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.169 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.167 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.166 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.165 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.164 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.163 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.162 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.161 tracks/python/exercises/binary-search-tree/example.py
trackler-2.2.1.160 tracks/python/exercises/binary-search-tree/example.py