def iraDispararUmErroSeOPaiJaPossuir2Filhos():
    numeros = ArvoreBinaria()
    numeros.inserir(0)
    numeros.inserir(1, 0)
    numeros.inserir(2, 0)

    with raises(FalhaNaOperacao):
        numeros.inserir(3, 0)
def testes_daPropiedade_tamanho_aposInserirAlgunsItens():
    numeros = ArvoreBinaria()
    numeros.inserir(0)

    assert numeros.tamanho == 1

    numeros.inserir(1, 0)
    numeros.inserir(2, 0)

    assert numeros.tamanho == 3

    numeros.inserir(3, 1)
    numeros.inserir(4, 1)

    assert numeros.tamanho == 5

    numeros.inserir(None, 4)

    assert numeros.tamanho == 6
Exemplo n.º 3
0
def main():
    """
    Quando temos uma árvore, e precisamos navegar nessa árvore de maneira
    organizada, podemos usar um Visitor

    Permitir atualizações específicas em uma coleção de objetos de acordo
    com o tipo particular de cada objeto atualizado.

    Representar uma operação a ser executada nos elementos de uma
    estrutura de objetos. Visitor permite definir uma nova operação
    sem mudar as classes dos elementos sobre os quais opera.
    """

    arvore = ArvoreBinaria(7)

    arvore.inserir(15)
    arvore.inserir(10)
    arvore.inserir(5)
    arvore.inserir(2)
    arvore.inserir(1)
    arvore.inserir(20)

    print("=== Exibindo em ordem ===")
    arvore.aceitar_visitante(ExibirInOrderVisitor())

    print("\n=== Exibindo pré ordem ===")
    arvore.aceitar_visitante(ExibirPreOrderVisitor())

    print("\n=== Exibindo pós ordem ===")
    arvore.aceitar_visitante(ExibirPostOrderVisitor())
def teste_IteradorPosFixado_iterarSobreUmaArvoreVazia():
    with naoGeraErro():
        for n in ArvoreBinaria():
            pass
def iraDispararUmErroSeOPaiNaoForLocalizado():
    num = ArvoreBinaria()
    num.inserir(0)

    with raises(ItemNaoEncontrado):
        num.inserir(1, 1)
def iraDispararUmErroSeOPaiNaoForInformadoEAArvoreNaoEstiverVazia():
    a = ArvoreBinaria()
    a.inserir(0)

    with raises(ParametroNaoInformado):
        a.inserir(1)
def arvorePronta():
    arv = ArvoreBinaria()
    arv.inserir(0)
    arv.inserir(1, 0)
    arv.inserir(2, 0)
    arv.inserir(3, 1)
    arv.inserir(4, 1)
    arv.inserir(None, 4)
    arv.inserir(5, 2)
    arv.inserir(6, 2)
    arv.inserir(7, 5)

    return arv
def definiraARaizDaArvoreSeOPaiNaoForInformadoEAArvoreEstiverVazia():
    a = ArvoreBinaria()
    a.inserir(0)

    assert a.raiz == 0
def testes_metodo_inserir():
    numeros = ArvoreBinaria()
    numeros.inserir(0)
    numeros.inserir(1, 0)
    numeros.inserir(2, 0)

    assert numeros.filhos(0) == (1, 2)
    assert numeros.pai(1) == numeros.pai(2) == 0

    numeros.inserir(3, 1)
    numeros.inserir(4, 1)

    assert numeros.filhos(1) == (3, 4)
    assert numeros.pai(3) == numeros.pai(4) == 1

    numeros.inserir(None, 4)

    assert numeros.filhos(4) == (None, )
    assert numeros.pai(None) == 4

    numeros.inserir(5, 2)
    numeros.inserir(6, 2)

    assert numeros.filhos(2) == (5, 6)
    assert numeros.pai(5) == numeros.pai(6) == 2