@author João Paulo
, Link para executar o projeto no replit.com.
Este projeto implementa uma árvore binária para tipos genéricos, no qual se usa de um tipo address
declarado na biblioteca types.h
, este tipo equivale a um ponteiro do tipo vazio void *
, ou tipo declarado neste arquivo de cabeçalho é o tipo string
, no qual é equivalente a char *
.
Uma árvore binária é uma estrutura de dados caracterizada por: Ou não tem elemento algum. Ou tem um elemento distinto, denominado raiz, com dois ponteiros para duas estruturas diferentes, denominadas subárvore esquerda e subárvore direita. Wikipédia
A interface deste projeto utiliza caracteres especiais para a formulação dos menus, também de métodos para o posicionamento no terminal e verificação se as teclas são pressionadas.
Na tela inicial existem dois métodos para sua navegação, sendo elas: as setas do teclado ou os números de 1 a 4, após selecionar uma opção só apertar a tecla enter para entrar na opção.
Nessa tela é possível a inserção de produtos na árvore podendo inserir 1 ou vários produtos, os produtos não serão inseridos se houver o mesmo código.
Nesta tela pode-se navegar pela árvore usando as setas do teclado para a esquerda e direita, mostrando o botão em cinza claro se não houver filho no nó.
A opção de buscar produtos abre um novo menu, no qual pode se optar por buscar via nome ou código.
O nó de uma árvore binária caracteriza-se por possuir um o valor que o nó armazena e o endereço para seus filhos (esquerda e direita), como no exemplo abaixo com número inteiro:
// Definição de uma estrutura para ser o tipo nó da árvore.
typedef struct NODE{
int valor; // Valor armazenado.
struct NODE * esquerda; // Filho a esquerda.
struct NODE * direita; // Filho a esquerda.
}no;
typedef struct TREE{
no * raiz;
}Tree;
A implementação é simples, como visto acima, para ajudar na navegação, pode se colocar o nó atual na árvore também para facilitar as operações de navegação na árvore.
typedef struct TREE{
no * raiz;
no * atual;
}Tree;
@author João Paulo
, Link to run the project on replit.com.
This project implements a binary tree for generic types, which uses a type address
declared in the types.h
library, this type is equivalent to an empty pointer void *
, or type declared in this header file is the string
type, which is equivalent to char *
.
A binary tree is a data structure characterized by: Either it has no elements. Or it has a distinct element, called the root, with two pointers to two different structures, called the left subtree and right subtree. Wikipédia
The interface of this project uses special characters to formulate the menus, as well as methods for positioning in the terminal and checking if the keys are pressed.
On the home screen there are two methods for your navigation, namely: the keyboard arrows or the numbers from 1 to 4, after selecting an option just press the enter key to enter the option.
In this screen it is possible to insert products in the tree, being able to insert 1 or several products, the products will not be inserted if there is the same code.
In this screen you can navigate through the tree using the left and right keyboard arrows, showing the button in light gray if there is no child in the node.
The option to search for products opens a new menu, in which you can choose to search by name or code.
The node of a binary tree is characterized by having a value that the node stores and the address for its children (left and right), as in the example below with an integer number:
// Definition of a structure to be the node type of the tree.
typedef struct NODE{
int valor; // Value stored.
struct NODE * left; // Child on the left.
struct NODE * right; // Child on the right.
}no;
typedef struct TREE{
no * root;
}Tree;
The implementation is simple, as seen above, to help navigation, you can place the current node in the tree as well to facilitate tree navigation operations.
typedef struct TREE{
no * root;
no * current;
}Tree;