#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int value;
struct TreeNode *left;
struct TreeNode *right;
};
#define CREATE_TREE(...) create_tree(__VA_ARGS__, 0)
struct TreeNode* create_tree(int value, ...) {
va_list args;
struct TreeNode *node;
if (value == 0) {
return NULL;
}
node = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node->value = value;
va_start(args, value);
node->left = create_tree(va_arg(args, int), args);
node->right = create_tree(va_arg(args, int), args);
va_end(args);
return node;
}
void pre_order(struct TreeNode *root) {
if (root) {
printf("%d ", root->value);
pre_order(root->left);
pre_order(root->right);
}
}
int main() {
struct TreeNode *root = CREATE_TREE(1, 2, 4, 0, 0, 5, 0, 0, 3, 6, 0, 0, 7, 0, 0);
pre_order(root);
return 0;
}