#include #include #include "balanced.h" struct node *insert_random(int seed, struct node *current, struct node *new) { if (!current) return new; if ((seed & 3) == 0) current->left = insert_random(seed >> 1, current->left, new); else current->right = insert_random(seed >> 1, current->right, new); return make_tree(current, current->left, current->right); } struct node *insert_right(struct node *current, struct node *new) { if (!current) return new; return make_tree(current, current->left, insert_right(current->right, new)); } void print_node(int n, struct node *node) { for (int i = 0; i < n; ++i) fputc(' ', stdout); fputs("- ", stdout); if (!node) fputs("leaf\n", stdout); else { fprintf(stdout, "node, height=%d\n", node->height); print_node(n + 1, node->left); print_node(n + 1, node->right); } } int main(int argc, char **argv) { (void)argc; (void)argv; struct node nodes[1024]; struct node *root = NULL; for (int i = 0; i < 1024; ++i) { struct node *node = make_tree(&nodes[i], NULL, NULL); if (0) { int seed = rand(); root = insert_random(seed, root, node); } else { root = insert_right(root, node); } } print_node(0, root); return 0; }