void print_bst(int i, int j, int parent) { int tmp; tmp = root[i][j]; if (tmp == root[1][N]) { printf("Parent is %d\n", tmp); print_bst(i, tmp - 1, tmp); print_bst(tmp + 1, j, tmp); return; } if (j < i - 1) { return; } if (j == i - 1) { if (j < parent) { printf("d %d is left child of %d\n", j, parent); } else { printf("d %d is right child of %d\n", j, parent); } } else { if (j < parent) { printf("k %d is left child of %d\n", j, parent); } else { printf("k %d is right child of %d\n", j, parent); } print_bst(i, tmp - 1, tmp); print_bst(tmp + 1, j, tmp); } }
void print_bst( Node **head ) { if (*head) { if ((*head)->right && (*head)->left) { printf("Node val = %d, right = 0x%llx (%d), left = 0x%llx (%d)\n", (*head)->val, (unsigned long long int) (*head)->right, (*head)->right->val, (unsigned long long int) (*head)->left, (*head)->left->val); } else if ((*head)->right) { printf("Node val = %d, right = 0x%llx (%d))\n", (*head)->val, (unsigned long long int) (*head)->right, (*head)->right->val); } else if ((*head)->left) { printf("Node val = %d, left = 0x%llx (%d))\n", (*head)->val, (unsigned long long int) (*head)->left, (*head)->left->val); } else { printf("Node val = %d... Leaf\n", (*head)->val); } print_bst( &(*head)->right ); print_bst( &(*head)->left ); } return; }
void print_bst(int i, int j, int r) { int rootChild = root[i][j]; if (rootChild == root[1][n]) { std::cout << "k" << rootChild << "是根" << std::endl; print_bst(i, rootChild - 1, rootChild); print_bst(rootChild + 1, j, rootChild); return; } if (j < i - 1) return; else if (j == i - 1) { if (j < r) std::cout << "d" << j << "是" << "k" << r << "的左孩子" << std::endl; else std::cout << "d" << j << "是" << "k" << r << "的右孩子" << std::endl; return; } else { if (rootChild < r) std::cout << "k" << rootChild << "是" << "k" << r << "的左孩子" << std::endl; else std::cout << "k" << rootChild << "是" << "k" << r << "的右孩子" << std::endl; } print_bst(i, rootChild - 1, rootChild); print_bst(rootChild + 1, j, rootChild); }
int main() { int arr[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; bst_node_t *root = NULL; root = convert_arr_to_bst(arr, 0, 11); printf("In Order\n"); print_bst(root, IN_ORDER); printf("Post Order\n"); print_bst(root, POST_ORDER); printf("Pre Order\n"); print_bst(root, PRE_ORDER); }
void print_bst( const struct bst_node* node ) { //printf("print_bst\n"); if(node == NULL) return ; printf( "%s " , (char *)node->bst_data); if(node->bst_link[0] != NULL || node->bst_link [1] != NULL) { putchar ('(') ; print_bst(node->bst_link[0]) ; putchar (',') ; putchar (' ') ; print_bst(node->bst_link[1]) ; putchar (')') ; } }
int main() { struct avl_table* avl_tree; struct bst_table* bst_tree; struct rb_table* rb_tree; char* input_str[STR_NUM]; char buf[BUF_SIZE]; void** p[3]; int str_length; avl_tree = avl_create( str_cmp , NULL, NULL) ; bst_tree = bst_create( str_cmp, NULL , NULL); rb_tree = rb_create(str_cmp, NULL , NULL); // input string for(int i=0;i<STR_NUM;i++){ if(fgets(buf, BUF_SIZE , stdin)!= NULL) { str_length = strlen(buf)-1; input_str[i] = malloc(str_length*sizeof(char)); strncpy(input_str[i],buf,str_length); //printf("%s\n",input_str[i]); p[0] = avl_probe( avl_tree , input_str[i]); p[1] = bst_probe( bst_tree , input_str[i]); p[2] = rb_probe( rb_tree , input_str[i]); } } print_avl(avl_tree->avl_root); printf("\n"); print_bst(bst_tree->bst_root); printf("\n"); print_rb(rb_tree->rb_root); printf("\n"); return 0; }
int main() { optimal_bst(p, q, n); print_root(); std::cout << "最优二叉树结构:" << std::endl; print_bst(1, n, -1); }
int main() { int i, key; link root = NULL; srand(time(NULL)); for (i = 0; i < N; i++) root = insert_bst(root, rand() % RANGE); printf("\t\\tree"); print_bst(root); printf("\n\n"); while (root) { key = rand() % RANGE; if (search_bst(root, key)) { printf("delete %d in tree\n", key); root = delete_bst(root, key); printf("\t\\tree"); print_bst(root); printf("\n\n"); } } return 0; }
int main(int argc, char **argv) { Node *root = NULL; Node *dl, *tl; int v; for(int i = 0; i < 10; i++) { v = rand() % 100; printf("%d ", v); insert_bst(&root, v); } printf("\n"); print_bst(root); printf("\n"); bst2dll(root, &dl, &tl); printf("%p %p\n", dl, tl); print_list(dl); return 0; };
int main() { int values[9] = {8, 10, 3, 6, 1, 14, 13, 4, 7}; Node *bst = NULL; printf("\n"); for (int i=0; i<9; i++) { insert_node( &bst, values[i] ); } printf("\n"); print_bst( &bst ); printf("\n\n"); draw_bst( &bst, 0 ); printf("\n"); return 0; }
void test() { // tests for bst_new() bst B = bst_new(&elem_compare); printf("bst_new() passes tests\n"); // tests for bst_insert() int size = 5; int i = 0; for (i = 0; i < size; i++) { wcount w = (wcount) xmalloc(sizeof(struct wcount)); w->word = (char*) xmalloc(size); sprintf(w->word,"%d", i); w->count = i; bst_insert(B, w); } printf("bst_insert() passes tests\n"); print_bst(B); // tests for bst_lookup() //ASSERT(B == NULL); return; }
int main() { memset(root, -1, sizeof(root)); optimal_bst(); print_bst(1, N, -1); }
void print_bst(Node *root) { if (root == NULL) return; print_bst(root->left); printf("%d " , root->data); print_bst(root->right); }