https://github.com/kplanisphere/binary-tree-operations
Proyecto 8 - Estructuras de Datos
https://github.com/kplanisphere/binary-tree-operations
binary-tree cpp data-structures in-order node-insertion post-order pre-order tree-operations tree-traversal
Last synced: 3 months ago
JSON representation
Proyecto 8 - Estructuras de Datos
- Host: GitHub
- URL: https://github.com/kplanisphere/binary-tree-operations
- Owner: KPlanisphere
- Created: 2024-05-30T22:18:26.000Z (12 months ago)
- Default Branch: main
- Last Pushed: 2024-05-30T22:18:53.000Z (12 months ago)
- Last Synced: 2024-12-29T15:26:05.479Z (5 months ago)
- Topics: binary-tree, cpp, data-structures, in-order, node-insertion, post-order, pre-order, tree-operations, tree-traversal
- Language: C++
- Homepage: https://linktr.ee/planisphere.kgz
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Binary Tree Operations
This project implements a binary tree in C++ with various operations to insert nodes and traverse the tree. The program includes functions to create nodes, insert nodes, and perform different tree traversals such as pre-order, in-order, and post-order. It also features a function to visually display the tree structure.
## Features
- **Insert Node**: Adds a new node to the binary tree.
- **Pre-order Traversal**: Traverses the tree in pre-order (root, left, right).
- **In-order Traversal**: Traverses the tree in in-order (left, root, right).
- **Post-order Traversal**: Traverses the tree in post-order (left, right, root).
- **Display Tree**: Visually displays the structure of the binary tree.
- **Menu Interface**: Provides a user-friendly interface to perform the above operations.## Usage
Compile the program using a C++ compiler and run the executable. You will be prompted to enter the number of nodes and their values, after which you can perform various tree operations.
### Example Commands
1. **Insert Node**: Prompts the user to enter the value for each new node.
2. **Pre-order Traversal**: Displays the nodes in pre-order traversal.
3. **In-order Traversal**: Displays the nodes in in-order traversal.
4. **Post-order Traversal**: Displays the nodes in post-order traversal.
5. **Display Tree**: Visually displays the tree structure.## Code Snippets
### Create Node
This function creates a new node with a given value and initializes its left and right children to NULL.
```cpp
NDO crearNodo(int x) {
NDO nuevoNodo = new(struct nodo); // Create space for the new node
nuevoNodo->dato = x; // Assign the value to the new node
nuevoNodo->izq = NULL;
nuevoNodo->der = NULL;
return nuevoNodo; // Return the new node
}
```### Insert Node
This function inserts a new node into the binary tree. If the tree is empty, it creates a new node as the root. Otherwise, it inserts the node in the correct position based on its value.
```cpp
void insertar(NDO& arbol, int x) {
if (arbol == NULL) { // Check if the tree is empty
arbol = crearNodo(x); // Create a new node
} else if (x < arbol->dato) { // If the value is less than the root
insertar(arbol->izq, x); // Insert in the left subtree
} else if (x > arbol->dato) { // If the value is greater than the root
insertar(arbol->der, x); // Insert in the right subtree
}
}
```### Pre-order Traversal
This function performs a pre-order traversal of the binary tree, printing the value of each node as it visits them.
```cpp
void preOrden(NDO arbol) {
if (arbol != NULL) { // If the node is not NULL
cout << arbol->dato << " "; // Print the current node
preOrden(arbol->izq); // Recursively traverse the left subtree
preOrden(arbol->der); // Recursively traverse the right subtree
}
}
```### Menu Interface
This part of the code provides a simple interface to interact with the binary tree. It prompts the user to enter the number of nodes and their values, and then displays the tree and performs various traversals.
```cpp
int main() {
NDO arbol = NULL; // Create the binary treeint n; // Number of nodes in the tree
int x; // Value to insert in each nodecout << "\n\t - - - - - GRAFUNGO BINARIO - - - - - \n\n";
cout << " NUMERO DE NODOS: ";
cin >> n;
cout << endl;// Insert nodes into the tree
cout << "\t NODO " << "| VAL " << endl;
for (int i = 0; i < n; i++) {
cout << "\t #" << i + 1 << " | "; // Indicator of the current node
cin >> x; // Input value
insertar(arbol, x);
}// Display the tree
cout << "\n ARBOL GENERADO \n\n";
verArbol(arbol, 0);// Pre-order traversal
cout << "\n\n PreOrden: ";
preOrden(arbol);
cout << endl << endl;// In-order traversal
cout << "\n\n enOrden: ";
enOrden(arbol);
cout << endl << endl;// Post-order traversal
cout << "\n\n postOrden: ";
postOrden(arbol);
cout << endl << endl;system("pause");
return 0;
}
```
## How to Run1. Clone the repository:
```bash
git clone https://github.com/KPlanisphere/binary-tree-operations.git
```
2. Navigate to the project directory:
```bash
cd binary-tree-operations
```
3. Compile the code:
```bash
g++ ABinario_V2.cpp -o binary_tree
```
4. Run the executable:
```bash
./binary_tree
```