Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

Como utilizar recursão para criar arvores binárias?

0 votos
25 visitas
perguntada Jul 12 em Ciência da Computação por Pedro Gomes (16 pontos)  
Compartilhe

1 Resposta

0 votos
respondida Jul 12 por Pedro Gomes (16 pontos)  

Respondendo a questão 8.1 do livro "Introduction to recursve programming - Manuel Rubio Sanchez"

Vamos criar uma arvore binária f(n,k) com n itens e altura k, utilizando recursão:

def arvore(n,k):
    alt = k
    y = []
    x = []
    larg = n**k  

    for j in range(0,k):
        a = alt - j
        a = [a]*(n**j)
        y.append(a)

        if j == 0:
                x = (larg)/2

        else:

            for i in range(1,n**j+1):
                a = (larg/(n**j+1))*i
                a = np.array(a,dtype = np.float)
                x = np.append(x,a)

    x = list(x)
    y = mpu.datastructures.flatten(y)
    pontos = np.array([x,y]).T
    fig = plt.figure()
    plt.scatter(x,y, s = 5)
    fig.savefig('questao1.jpg')         
    return print("O número total de nódulos da árvore é:",len(pontos)) 

Chamando a função arvore(2,3), obtemos como resposta:
O número total de nódulos da árvore é: 7
A imagem será apresentada aqui.

No caso arvore(6,6):
O número total de nódulos da árvore é: 9331
A imagem será apresentada aqui.

comentou Jul 13 por Pedro Duque (51 pontos)  
editado Jul 13 por Pedro Duque
Bacana seu código, Pedro! Todavia, notei que você não especificou as bibliotecas que usou no início do código. Consegui identificar o numpy as np e o Matplotliblib.pyplot as plt e, depois de um pouco de pesquisa, consegui baixar o módulo mpu e assim rodar seu código!!!

Seria legal especificar a fonte das funções, importando as bibliotecas no início e usando # para explicar em texto os módulos que foram usados e como baixá-los, para podermos reproduzir seu código com mais facilidade. Exceto por esse detalhe, nota-se que você conseguiu responder a questão do livro perfeitamente, parabéns!
...