Skip to content

Instantly share code, notes, and snippets.

@aziis98
Created January 17, 2018 11:17
Show Gist options
  • Select an option

  • Save aziis98/97e7cb19998bc9570a30735e50a476b9 to your computer and use it in GitHub Desktop.

Select an option

Save aziis98/97e7cb19998bc9570a30735e50a476b9 to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int label;
struct node * left;
struct node * right;
} Tree;
Tree *insert_tree(Tree *tree, int value) {
if (tree == NULL) {
Tree *node = malloc(sizeof(Tree));
node->label = value;
node->left = NULL;
node->right = NULL;
return node;
}
else {
if (tree->label > value) {
if (tree->right == NULL) {
Tree *node = malloc(sizeof(Tree));
node->label = value;
node->left = NULL;
node->right = NULL;
tree->right = node;
}
else {
insert_tree(tree->right, value);
}
}
else {
if (tree->left == NULL) {
Tree *node = malloc(sizeof(Tree));
node->label = value;
node->left = NULL;
node->right = NULL;
tree->left = node;
}
else {
insert_tree(tree->left, value);
}
}
return tree;
}
}
void print_tree(Tree *tree) {
if (tree != NULL) {
printf("%d", tree->label);
if (tree->left != NULL || tree->right != NULL) {
printf(" [ ");
print_tree(tree->left);
printf(" | ");
print_tree(tree->right);
printf(" ] ");
}
}
}
int main() {
Tree *tree = NULL;
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int j;
scanf("%d", &j);
tree = insert_tree(tree, j);
}
print_tree(tree);
return 0;
}
// TODO: altra funzione da fare
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment