Jump to content
andreluizsgf

Impressão de Árvore Binária.

Recommended Posts

Boa noite, eu estou tentando implementar uma função que imprima uma árvore como ela deveria ser, com o pai acima e a direita do menor filho e acima e a esquerda do maior filho. 

Já tenho duas funcões que me permitem imprimir por nível, porém estou tentando adaptá-las para a impressão correta. Exemplo:

árvore: 5,4,3,2,1;

Impressão:
            5
    3             4
1      2


O código para o print é este:

 

void ---ivel(node_t* raiz, int level)
{
if (raiz == NULL){
for(int i = 0 ; i < 3 ; i++){
printf("\t");
return;}
}
if (level == 1) {
for (int i=0; i<altura(raiz); i++)
printf("\t");
simpleprint(raiz);
} else if (level > 1)
{
---ivel(raiz->left, level-1);
---ivel(raiz->right, level-1);
}
}
 
void printarordem(node_t *raiz)
{
int h = altura(raiz);
int i;
for (i=1; i<=h; i++)
{
printf("\t");
---ivel(raiz, i);
printf("\n");
}
}

Se alguém souber como resolver este ou sugerir outra implementação, fico super agradecido! 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By nixfb
    • By pachecok
      Estou iniciando em programação e tenho um trabalho em C que devo:
       
      Construir um programa que leia uma matriz 7x7 de inteiros.
      Após a leitura, calcular o somatório apenas dos elementos abaixo destacados da matriz lida.
      Mostre, os elementos destacados e o somatório.
       
      A soma deve ser entre as posições da matriz refentes a imagem em anexo. 
      É esta a dificuldade que eu encontrei, não sei os passos para realizar esta soma em específico então provavelmente a minha tentativa abaixo foi bizarra. 
       
      Alguém poderia me ajudar? Agradeço desde já. 
       
      #include<stdio.h> #include<conio.h> #define linha 7 #define coluna 7 int main (void ) { int i, j, matriz[linha][coluna], result, soma; printf ("\nDigite valor para os elementos da matriz\n\n"); for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ printf ("\nElemento[%d][%d] = ", i, j); scanf ("%d", &matriz[ i ][ j ]); } } for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ printf ("%i", matriz[i][j]); } printf("\n"); } for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ result=result+matriz[i][j]; } } for ( i=0; i<linha; i++ ){ for ( j=0; j<coluna; j++ ){ soma=soma+matriz[3][3]+matriz[4][2]+matriz[4][3]+matriz[4][4]+matriz[5][1]+matriz[5][2]+matriz[5][3]+matriz[5][4]+matriz[5][5]+matriz[6][0]+matriz[6][1]+matriz[6][2]+matriz[6][3]+matriz[6][4]+matriz[6][5]+matriz[6][6]; } } printf("\n\nA soma de todos valores da matriz: %d\n", result); printf("\n\nA soma dos valores solicitados: %d\n", soma); }  

    • By Lauts
      programa
      {
          inclua biblioteca Matematica
          
          funcao inicio()
          {
              inteiro hom=0, mul=0, rsim=0, rnao=0, rhsim=0, rmsim=0, n, t=4
              real psim, pnao
              caracter sexo, resp
              (n == t)
          {
              leia ("Informe o Sexo: ", sexo)
              leia ("Gostou do produto (S/N): ", resp)
              se (sexo =='1')
              {
                  hom = hom + 1
                  se (resp == '1')
              {
                  rmnao = rmnao + 1
              }
              }
              senao
              {
                  se (sexo == '2')
              {
                  mul = mul + 1
                  se (resp == '2')
              {
                  rhsim = rhsim + 1    
              }    
              }
              }
                  se (resp == '1')
              {
                  rsim = rsim +1            
              }
                  senao
              {
                  se (resp == '2')
              {
                  rnao = rnao +1
              }
              }
          n = n  + 1
          }
              psim = 100 * (rmsim / t)
              pnao = 100 * (rhnao / t)
          }
              escreva ("Quantidade de pessoas que responderam sim: ", rsim)
              escreva ("Quantidade de pessoas que responderam não: ", rnao)
              escreva ("Porcentagem de mulheres que responderam sim: ", psim)
              escreva ("Porcentagem de homens que responderam não: ", pnao)
      }
    • By Kvalo
      estou tentando fazer um programa que verifique 3 valores e informe o maior, o menor e se forem iguais! oq ta errado 
       
      #include<stdio.h>
      #include<stdlib.h>
      #include<locale.h>
      int main()
      {
          setlocale(LC_ALL,"Portuguese");
          int maior,menor;
          float a,b,c;
          printf("\n\tDigite 3 valores: \n");
          scanf("%f%f%f",&a,&b,&c);
          if (a>b&&a>c)
          {
              maior=a;
          }
          else{}
          if (b>a&&b>c)
          {
              maior=b;
          }
          else{}
          if(c>a&&c>b)
          {
              maior=c;
          }
          if (a<b&&a<c)
          {
              menor=a;
          }
          else{}
          if(b<a&&b<c)
          {
              menor=b;
          }
          else{}
          if(c<a&&c<b)
          {
              menor=c;
          }
          else{}
          if (a==b&&b==c&&a==c)
          {
              printf("\n\tValores iguais\n\n");
          }
          else{}
          printf("\n\tO maior é: %d\n\tO menor é: %d\n\n",maior,menor);
          system("pause");
          return 0;
      }
       
    • By Keven Augusto
      Primeiramente, bom dia/boa tarde/boa noite.
       
      Eu estou migrando de vez para o Linux e percebi que não possui nenhuma aplicação nativa de cronometro como a que estava acostumado a utilizar no Windows 10. Eu faço home office, então uso muito para gerir o tempo de trabalho diário e gostaria de utilizar no Ubuntu também. 
       
      Procurei na loja do sistema, mas não encontrei nenhum que me agradasse e, como estudante de Engenharia de Computação, pensei em fazer um simples que execute no terminal mesmo e possua as funções básicas que preciso: start, pause e reset.
       
      Porém, estava pensando e não aprendi ainda e não tenho a menor ideia de como faria para que fosse exibido no terminal o contador e ao mesmo tempo examinar o teclado para que pause a execução caso seja pressionada uma determinada tecla.
       
      Alguém teria alguma ideia de como possa fazer para isso?
       
      Eu pensei em iniciar um novo terminal via código mesmo e ir mostrando o contador neste outro terminal, aí no primeiro eu insiro os comandos para pausar, começar ou reiniciar o tempo. Penso que seja mais ou menos isso que preciso fazer, mas não tenho certeza e gostaria de uma luz.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.