Exemple #1
0
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);
    }
}
Exemple #2
0
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;
}
Exemple #3
0
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);
}
Exemple #5
0
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 (')') ;
	}
}
Exemple #6
0
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;
}
Exemple #7
0
int main()
{
    optimal_bst(p, q, n); 
    print_root(); 
    std::cout << "最优二叉树结构:" << std::endl; 
    print_bst(1, n, -1); 
}
Exemple #8
0
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;
}
Exemple #9
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;
};
Exemple #10
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;
}
Exemple #11
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;
}
Exemple #12
0
int main() {
    memset(root, -1, sizeof(root));
    optimal_bst();
    print_bst(1, N, -1);
} 
Exemple #13
0
void print_bst(Node *root) {
  if (root == NULL) return;
  print_bst(root->left);
  printf("%d " , root->data);
  print_bst(root->right);
}