#include <stdio.h>
#include <stdlib.h>

struct node {
    int data;
    struct node *left;
    struct node *right;
};

typedef struct node node;


node* newNode(int data) {
    node* node = malloc(sizeof(node));
    node->data = data;
    node->left = NULL;
    node->right = NULL;
    return node;
}

void ImprimePreOrdemAux(node* arv, int nivel) {
    if(arv!=NULL) {
        if (nivel != 0) {
            printf("-");
        }
        printf("%d",arv->data);
        ImprimePreOrdemAux(arv->left, nivel + 1);
        ImprimePreOrdemAux(arv->right, nivel + 1);
    }
}

void ImprimePreOrdem(node* arv) {
    ImprimePreOrdemAux(arv, 0);
}

int main(){
    node *root = newNode(1);
    root->left        = newNode(2);
    root->right       = newNode(3);
    root->left->left  = newNode(4);

    ImprimePreOrdem(root);
    return 0;
}
