árvores binárias
Uma árvore binária é uma estrutura de dados mais geral que uma lista encadeada.
Primeira Parte: Nós uma árvore binária é composta por nós e registros, cada nó tem um enderenço.
Segunda parte: Filhos
Cada nó e ligado a outro nó a esquerda e a direita também por exemplo a esquerda é o pai(x) e a direita é o filho(y) formando uma família mas tem o nó sozinho que seria a folha(leaf) o solteirão
Terceira parte:Subárvores e árvores
Um nó x junto com todo os seus decendentes formam uma árvore o primeiro x é a raiz(Root) mas se esse x tiver um pai ele é uma subárvore de uma árvore muito maior, mas se x é null(nulo) a árvore é vazia
Endereço de árvores e outras coisas
O endereço de uma árvore é a sua raiz.
Existem varias formas de árvores binárias mas geralmente a raiz é o topo.
Exemplo:
#include
#include struct bin_tree { int data; struct bin_tree * right, * left;
};
typedef struct bin_tree node; void insert(node ** tree, int val)
{
node *temp = NULL; if(!(*tree)) { temp = (node *)malloc(sizeof(node)); temp->left = temp->right = NULL; temp->data = val;
*tree = temp; return; } if(val < (*tree)->data)
{
insert(&(*tree)->left, val);
}
else if(val > (*tree)->data)
{
insert(&(*tree)->right, val);
}
} void print_preorder(node * tree)
{
if (tree)
{
printf("%d\n",tree->data); print_preorder(tree->left); print_preorder(tree->right);
}
} void print_inorder(node * tree)
{
if (tree)
{
print_inorder(tree->left); printf("%d\n",tree->data); print_inorder(tree->right);
}
} void print_postorder(node * tree)
{
if (tree)
{
print_postorder(tree->left); print_postorder(tree->right); printf("%d\n",tree->data);
}
} void deltree(node * tree)
{
if (tree)
{
deltree(tree->left); deltree(tree->right); free(tree);
}
} node* search(node ** tree, int val)
{
if(!(*tree))
{
return NULL;
}
if(val < (*tree)->data)
{
search(&((*tree)->left), val);
}
else if(val > (*tree)->data)
{