Uma árvore binária cujos nós armazenam números inteiros pode...
Uma árvore binária cujos nós armazenam números inteiros pode ser representada na linguagem Python por uma lista com três elementos:
• o primeiro representa a informação armazenada no nó (número inteiro);
• o segundo é uma lista que representa a subárvore esquerda;
• o terceiro é uma lista que representa a subárvore direita.
As variáveis a seguir representam os nós de uma árvore binária construída segundo a estrutura acima descrita. Os nós n3, n4 e n6 são as folhas; n1, n2 e n5 são os nós intermediários; e n0 é o nó raiz.
n6=[4,[],[]]
n5=[6,[],n6]
n2=[8,n5,[]]
n3=[5,[],[]]
n4=[9,[],[]]
n1=[7,n3,n4]
n0=[3,n1,n2]
Seja o seguinte programa Python:
O que será exibido no console quando ele for executado?
N0
/ \
N1 N2
/ \ \
N3 N4 N5
\
N6
Contagem das Folhas
int contarFolhas(No *pRaiz){
if(pRaiz == NULL)
return 0;
if(pRaiz->esquerda == NULL && pRaiz->direita == NULL)
return 1;
return contarFolhas(pRaiz->esquerda) + contarFolhas(pRaiz->direita);
}
alguém pode expilcar isso???? não entendo nada.
OR XOR NOR AND
Explicação excelente sobre arvore binaria.
https://www.youtube.com/watch?v=XZ0MEDhb4oE
A arvore é como o Bruno mostrou:
N0
/ \
N1 N2
/ \ \
N3 N4 N5
\
N6
Aí o programa vai chamar na ordem que estão dispostas nos vetores. Então será:
1) N0 -> N1 -> N3 (mostra valor de N3)
2) Volta pra N1 -> N4 (mostra valor de N4)
3) Volta pra N1 -> (mostra valor de N1)
4) Volta pra N0 -> N2 -> N5 -> N6 (mostra valor de N6)
5) Volta pra N5 (mostra valor de N5)
6) Volta pra N2 (mostra valor de N2)
7) Volta pra N0 (mostra valor de N0)
fim.
Correção desta questão
https://www.youtube.com/watch?v=GsXhQr54K8Q
tempo 2:50:15
O segredo da questão está na ordem do percurso da árvore. O percurso é o Pós-Ordem (Esquerda, Direita, Raiz)
Obs.: utilize a árvore do Bruno Torregiani
- Ele passa como parâmetro da lista o n0. lista(n0)
- n0[3, n1, n2], ou seja 3(RAIZ), n1(Esquerda), n2(Direita)
- Com as premissas apresentadas, ja temos que o 1º nó a ser impresso é n3(valor 5) e o último nó é a raiz n0(valor 3)
- a única alternativa que contempla as presmissas é a C (5 9 7 4 6 8 3)
@papirobizurado
Gabarito: C. Prova nível seleção para trabalhar na NASA!
mano, esses conteudos não tem nada a ver com escriturário wtf this.
A árvore será percorrida em pós ordem.
n[1] analisa o índice da subárvore esquerda
n[2] analisa o índice da subárvore direita
n[0] retorna o nó raiz.
O que eu não entendi é a ordem da impressão da função.
Como é recursão, ele não empilha e depois sai desempilhando e inverteria a ordem sendo o n0 (raiz) primeiro e não o último? Alguém sabe explicar?
def lista(n):
if n == 0:
return
lista([1])
ista([2])
print(n[0], end=' ')
Eu não entendi a questão.
Primeiro: Eu executei o programa no pycharm e com o retorno nele chegamos na alternativa C.
Segundo: Ele não retornou nada, visto que não há a função "print". Tentei tanto no console, quanto no PyCharm.
O certo não seria a árvore ser assim?
o segundo é uma lista que representa a sub-árvore esquerda;
n2 = [ 8 ,n5, [] ]
N0
/ \
N1 N2
/ \ /
N3 N4 N5
\
N6