Programação  
 
Conhecimento computador >> Programação >> C /C + + programação >> 
Como criar uma árvore binária em C
árvores binárias em C são uma boa maneira de organizar dinamicamente os dados para facilitar a busca . No entanto, eles exigem muito trabalho para manter. Instruções
Criar a árvore de Binary
1

Estrutura sua árvore binária. Cada árvore binária vai precisar de uma estrutura , mesmo que ele só tem uma variável. Escolha um nome, em seguida, usar typedef para criá-lo :

 typedef struct student_data STUDENT_DATA ; Página 2 

Definir a estrutura . Inclua dois ponteiros para a mesma estrutura :

 struct {int student_data student_id ; int student_grade ; STUDENT_DATA * deixou , * direito ; } ; 
3

Alocar um ponteiro para esta estrutura de dados , inicializando-lo para NULL , para ser a cabeça da árvore :

 STUDENT_DATA * estudantes = NULL; 
Adicionar à árvore de Binary
4

Alocar dois ponteiros temporários para a estrutura de dados :

 STUDENT_DATA * new_student , * cur_student ; 
5

Use malloc () para criar um novo elemento, sempre a verificação de um erro:

 if (( new_student = malloc ( sizeof ( STUDENT_DATA ) )) == NULL) { abort ( );} 
6

preencher os campos do novo elemento. Defina seus campos de esquerda e direita para NULL :

 new_student -> student_id = NewID ; new_student -> student_size = novotamanho ; new_student -> left = NULL; new_student -> direita = NULL; 
7

Considere a cabeça variável. Se a variável de cabeça é NULL, este é o primeiro elemento adicionado à árvore , para definir a variável de cabeça para apontar para ele , e pronto :

 se { estudantes = new_student ; retorno ;} < (estudantes !) br> 8 

Comece no topo da árvore:

 cur_student = estudantes , enquanto ( cur_student ) { 
9

Manipular a entrada duplicada se o novo valor e valor atual são iguais :

 if ( NewID == cur_student -> student_id ) { abort ( );} 
10

lidar com valores desiguais . Se o novo valor é menor do que o valor actual , o novo elemento vai para a esquerda . Adicione imediatamente se não há nada à esquerda. Caso contrário, atravessar para a esquerda e loop:

 if ( NewID student_id ) {if ( cur_student -> esquerda == null) { cur_student -> left = newstudent ; retornar 1 ;} cur_student = cur_student -> esquerda; 
11 < p> Faça a mesma coisa do lado direito, de outra forma :
 } else {if ( cur_student -> direita == null) { cur_student -> direita = newstudent ; retornar 1 ;} cur_student = cur_student -> direita ;}} 

Pesquisar na árvore binária
12

Criar um apontador temporário variável para a estrutura de dados : STUDENT_DATA

 * cur_student ; 
13

Defina sua variável temporária para a cabeça variável :

 cur_student = students_head ; 
14

loop através dos elementos , verificando o valor desejado :

 while ( cur_student ) {if ( cur_student -> student_id == 15) {return cur_student -> student_grade ;} 
15

Filial esquerda ou direita, e loop, se não for encontrado:

 if ( cur_student -> student_id cur_student = cur_student -> direita ;} else { cur_student = cur_student -> left; } 
16

Veja se o laço termina Se isso acontecer , significa que você nunca encontrou o item : .

 } return 0; 
Clean Up
17

. liberar a árvore binária quando o programa termina , como nem todos os sistemas operacionais vai lidar com isso automaticamente este é o melhor feito usando uma função recursiva : deallocate_binary_tree

 void ( * STUDENT_DATA árvore ) { 
18

Observe : Se não não é qualquer árvore , não há nada a fazer:

 if (! árvore) return; 
19

liberar a subárvores esquerda e direita de forma recursiva :

 deallocate_binary_tree ( árvore -> esquerda); deallocate_binary_tree ( árvore -> direita) ; 
20

desalocar o elemento, e está feito :

 livre (árvore) ;} 

Anterior :

Próximo : No
  Os artigos relacionados
·Como criar uma instrução switch em C 
·Como importar modelos no GTK Radiant 
·Como fazer uma ligação com Windows Mobile 
·Como compilar Netcat 
·Como usar arquivos FX em GTK Radiant 
·Como ler um arquivo seqüencial em C 
·Como compilar CPP em um Mac 
·CSharp Controles para DataGridView 
·Como abrir um PDF em C # 
·Como compilar o código C + G+ Com 
  Artigos em destaque
·O que é um erro de Runtime 8005 
·Como encontrar um vazamento de memória no Linux 
·Exibindo uma mensagem em C + + 
·Como mostrar imagens em um Silverlight Datagrid 
·Como fazer um arquivo CFG Com o Visual C 
·Como criar um programa em C no Visual Studio 
·Como ler um arquivo de caixa de listagem em C # 
·Como compilar um GDB 64 -Bit 
·Como procurar uma lista encadeada de elementos em C + +…
·Como dividir um arquivo FLAC com Dev- C + + 
Cop e direita © Conhecimento computador http://ptcomputador.com Todos os Direitos Reservados