def _to_list(node):

if __name__ == '__main__':
    t = Tree()

    t.add(5)
    t.add(3)
    t.add(4)
    t.add(2)
    t.add(7)
    t.add(6)
    t.add(8)
示例#2
0
def main():
    level = int(sys.argv[1])

    for _ in range(100):
        r_array = list(random.randint(-20, 20) for _ in range(7))
        r_in = ' '.join(map(str, r_array))
        user_out = os.popen('echo "{}" | ./a.out'.format(r_in)).read().strip()
        user_array = list(map(int, user_out.split()))
        print('{}\t->\t{}'.format(r_in, user_out))

        tree = Tree()
        tree.add(r_array)

        if level == 0:
            expected_array = breadth_first_search(tree)
        elif level == 1:
            expected_array = pre_order_search(tree)
        elif level == 2:
            expected_array = post_order_search(tree)
        else:
            raise NotImplementedError

        assert user_array == expected_array, 'expected {}, got {}'.format(
            expected_array, user_array)
示例#3
0
from bst import Tree

tree = Tree()
tree.add(2)
tree.add(3)
tree.add(1)
tree.print_tree()
        return 0
    if node and (node.left is None and node.right is None):
        return 1
    if node is not None:
        height = max(_height(node.left), _height(node.right)) + 1
    else:    
        height = 0

    return height

def height(tree):
    if tree is None:
        return 0

    if tree and (tree.get_root().left is None and tree.get_root().right is None):
        return 1

    return _height(tree.get_root())    

if __name__ == '__main__':
    t1 = Tree()

    t1.add(5)
    t1.add(1)
    t1.add(3)
    t1.add(6)
    t1.add(7)
    t1.add(4)

    print height(t1)
    if current is None:
        return None

    while ((s.is_empty() is not True) or (current is not None)):
        if current is not None:
            s.push(current)
            current = current.left
        else:
            current = s.get_top()
            s.pop()
            print " --> " + str(current.value)
            current = current.right
            

if __name__ == '__main__':

    t = Tree()

    t.add(5)
    t.add(2)
    t.add(4)
    t.add(1)
    t.add(7)
    t.add(6)
    t.add(8)

    t.print_tree()

    inorder(t)
            return(_is_identical(n1.left,n2.left), _is_identical(n1.right,n2.right))
        else:
            return False

def is_identical(t1, t2):
    if t1 is None and t2 is None:
        return True
    else:
        if t1 is None or t2 is None:
            return False
        else:
            if (t1.get_root().value == t2.get_root().value):
                return (_is_identical(t1.get_root().left,t2.get_root().left) and
                        _is_identical(t1.get_root().right,
                        t2.get_root().right))
    
if __name__ == '__main__': 

    t1 = Tree()
    t2 = Tree()

    t1.add(2)
    t1.add(1)
    t1.add(3)

    t2.add(2)
    t2.add(1)
    t2.add(3)

    print is_identical(t1,None)
        return has_key(node.right, key)

def floor_ceil(node, key, floor, ceil):
    while node:
        if node.value == key:
            floor = node
            ceil = node
        elif key < node.value:
            ceil = node
            node = node.left
        else:
            floor = node
            node = node.right

if __name__=='__main__':

    t = Tree()

    t.add(6)
    t.add(2)
    t.add(3)
    t.add(9)
    t.add(7)

    t.print_tree()

    floor = None
    ceil = None
    floor_ceil(t.get_root(),1,floor,ceil)
    print floor, ceil
    node.value = bst[index]
    print node.value
    index = index + 1
    convert_to_bst(node.right,index)

def to_list(node):
    if node is None:
        return

    to_list(node.left)
    bst.append(node.value)
    to_list(node.right)


if __name__ == '__main__':
    t = Tree()

    t.add(5)
    t.add(3)
    t.add(6)
    t.add(9)
    t.add(2)
    t.add(4)

    t.print_tree()

    to_list(t.get_root())
    qsort(bst)
    index = 0
    convert_to_bst(t.get_root(),index)
        node.value = 0
    if node is not None:    
        _delete(node.left)
        _delete(node.right)
        node.value = 0

def delete(tree):
    if tree is None:
        return None 

    if tree:
       tree.get_root().value = 0 
    
    _delete(tree.get_root())   

if __name__ == '__main__':
    t1 = Tree()
    t1.add(2)
    t1.add(1)
    t1.add(3)
    t1.add(5)
    t1.add(4)
    t1.add(6)


    t1.print_tree()

    delete(t1)

    t1.print_tree()
def preorder(node):
    
    if node is None:
        return None
    
    print node.value
    preorder(node.left)
    preorder(node.right)

    return


if __name__ == '__main__':
    t = Tree()

    t.add(5)
    t.add(8)
    t.add(2)
    t.add(3)
    t.add(1)
    t.add(6)
    t.add(9)


    t.print_tree()

    print "-- Preorder -- "
    preorder(t.get_root())
    print "-- End -- "