ppt_mac Postado Julho 12, 2007 Denunciar Share Postado Julho 12, 2007 typedef struct Node{ int elem; struct Node *esq,*dir;}*Tree;Presciso desta função que preenche o array com os elementos da arvore de procura ordenados por ordem crescente.Esta funçao tem ainda um parametro (entrada e saida)que indica qual a primeira posicão livre do array. void treeToArray(Tree t,int A[],int *i)Obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Inufelipe Postado Julho 12, 2007 Denunciar Share Postado Julho 12, 2007 Voce quer algo assim:#include <stdio.h> #include <stdlib.h> const int ROOT = -1; int id_last = 0; struct tree{ int id,father,content; }; tree allocIn(int value,int father){ tree temp; temp.id = id_last; temp.father = father; temp.content = value; return tree; id_last++; } tree* tree2array(int father_id){ int i = 0; int j = 0; tree *temp; while(i < id_last){ if(temp[i].father == father_id){ j++; } i++; } temp = (tree)malloc(sizeof(tree)*j); i = 0; j = 0; while(i < id_last){ if(temp[i].father == father_id){ temp[j++] = temp[i]; } i++; } return temp; }Desculpas, o codigonão ta muito bom...espero ter ajudado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ppt_mac Postado Julho 12, 2007 Autor Denunciar Share Postado Julho 12, 2007 Obrigado!! Mas acho que consegui fazer de outra maneira, visto que se trata de uma arvore de procura.A sub-arvore da esq contem elementos menor que a raiz e na sub-arvore dir tem elementos maiores. Logo acho que basta fazer uma passagem inorder dessa arvore. Fica algo assimvoid treeToArray(Tree t,int A[],int *i){if(!t){ inorder(t->esq,A,i); A[*i] = t->elem; (*i)++; inorder(t->dir,A,i); }} Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
ppt_mac
typedef struct Node{
int elem;
struct Node *esq,*dir;
}*Tree;
Presciso desta função que preenche o array com os elementos da arvore de procura ordenados por ordem crescente.Esta funçao tem ainda um parametro (entrada e saida)
que indica qual a primeira posicão livre do array.
void treeToArray(Tree t,int A[],int *i)
Obrigado
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.