示例#1
0
void print_btree(btree_node *r)
{
  unsigned int j;

  if (r != NULL) {
    for (j = 0; j < r->nkeys; j++) {
      print_btree(r->children[j]);
      printf("%f ", r->keys[j]);
    }
    print_btree(r->children[j]);
  }
}
示例#2
0
//普通打印(打印包括节点信息)
void print_btree(bnode * root)
{
	if(root == NULL)
	{
		return;
	}

	printf("节点元素:");
	printf("是否叶子节点:%d", root -> isleaf);

	//打印根节点
	printf(";成员:[");
	for(int i = 0; i < root -> keynum; i++)
	{
		printf("%d", root -> keys[i]);
		if(root -> keynum - 1 != i)
		{
			printf(",");
		}
	}
	printf("]");
	printf(";在父节点的位置:%d", root -> p_pos);
	printf(";key数量:%d\n", root -> keynum);

	//打印子节点
	for(int i = 0; i <= root -> keynum; i++)
	{
		print_btree(root -> children[i]);
	}
}
示例#3
0
int main()
{
	btree_node *bt = NULL;
	char b[50] = "a(b(c),d(e(f,g),h(,i)))";
	//char b[50] = "a";
	int depth = 0;

	printf("%s\n",b);

	init_btree(&bt);
	create_btree(&bt, b);

	print_btree(bt);
	printf("\n");
	
	depth = depth_btree(bt);
	printf("btree depth:%d\n", depth);
	
	return 0;
}
示例#4
0
int main() {
    Chave chave, inicializadora;
    short rrn, pos;
    strcpy(inicializadora.chave, "SHE01\0");

    BTPAGE page;

    if (btopen()) /* try to open btree.dat and get root       */
        printf("Arquivo aberto de índice aberto com sucesso!\n");
    else
        root = create_tree(inicializadora); /* if btree.dat not there, create it        */

    strcpy(chave.chave, "BBB02\0");
    chave.rrn_dados = 22;
    insert(root, chave);
    strcpy(chave.chave, "CCC02\0");
    insert(root, chave);
    strcpy(chave.chave, "DDD02\0");
    insert(root, chave);
    strcpy(chave.chave, "EEE02\0");
    insert(root, chave);
    strcpy(chave.chave, "FFF02\0");
    insert(root, chave);
    strcpy(chave.chave, "GGG02\0");
    insert(root, chave);
    strcpy(chave.chave, "HHH02\0");
    insert(root, chave);
    strcpy(chave.chave, "III02\0");
    insert(root, chave);
    strcpy(chave.chave, "JJJ02\0");
    insert(root, chave);
    strcpy(chave.chave, "KKK02\0");
    insert(root, chave);
    strcpy(chave.chave, "LLL02\0");
    insert(root, chave);
    strcpy(chave.chave, "MMM02\0");
    insert(root, chave);
    strcpy(chave.chave, "NNN02\0");
    insert(root, chave);
    strcpy(chave.chave, "OOO02\0");
    insert(root, chave);
    strcpy(chave.chave, "PPP02\0");
    insert(root, chave);
    strcpy(chave.chave, "QQQ02\0");
    insert(root, chave);
    strcpy(chave.chave, "RRR02\0");
    insert(root, chave);
    strcpy(chave.chave, "SSS02\0");
    chave.rrn_dados = 45;
    insert(root, chave);
    strcpy(chave.chave, "TTT02\0");
    insert(root, chave);
    strcpy(chave.chave, "UUU02\0");
    insert(root, chave);
    strcpy(chave.chave, "VVV02\0");
    insert(root, chave);
    strcpy(chave.chave, "VVX02\0");
    insert(root, chave);
    strcpy(chave.chave, "VVW02\0");
    insert(root, chave);
    strcpy(chave.chave, "WWW02\0");
    insert(root, chave);
    strcpy(chave.chave, "WWY02\0");
    insert(root, chave);
    strcpy(chave.chave, "YYY02\0");
    insert(root, chave);
    strcpy(chave.chave, "XXX02\0");
    insert(root, chave);
    strcpy(chave.chave, "ZZZ02\0");
    insert(root, chave);
    printf("\n");

    strcpy(chave.chave, "BBB02\0");
    if (search_key_on_tree(root, chave, &rrn, &pos))
        printf("RRN %d\n", rrn);
    else
        printf("Nao achouw\n");

    print_btree(root);
    strcpy(chave.chave, "ZZZ02\0");
    remove_key(root, chave);
    print_btree(root);
    strcpy(chave.chave, "YYY02\0");
    remove_key(root, chave);
    print_btree(root);
    
    strcpy(chave.chave, "VVX02\0");
    remove_key(root, chave);
    print_btree(root);
    

    btclose();
    return 0;
}
示例#5
0
int main(int argc, char * argv[]){
	// int data[] = {20,8,5,3,1,10,2,7,9,4,6,18,11,12,15};
	// int data[] = {20,8,5,3,1,10,2,7,9,4,6,18,11};
	int data[] = {20,8,5,3,1,10,2,7,9,4,6,18};
	int len;
	GET_ARRAY_LEN(data, len);

	init_btree();

	//插入节点
	for (int i = 0; i < len; i++)
	{
		insert(&bt_root, data[i]);
	}

	//测试查找函数
	// int pos = -1;
	// bnode * want = find(bt_root, 9, &pos);
	// if(pos != -1)
	// {
	//  printf("%d\n", want -> parent -> keys[0]);
	// 	printf("pos :%d\n", pos);
	// 	printf("p_pos :%d\n", want -> p_pos);
	// }
	// else
	// {
	// 	printf("%s\n","没找到元素");
	// }

	//层级打印B树
	printf("层级打印:\n");
	hierarchy_traversal_recurse(bt_root, 1);

	printf("普通打印:\n");
	print_btree(bt_root);


	//测试删除数据 示例 1
	// remove_key( &bt_root, 7 );
	// remove_key( &bt_root, 5 );
	// remove_key( &bt_root, 4 );
	// remove_key( &bt_root, 1 );
	// remove_key( &bt_root, 2 );
	// remove_key( &bt_root, 3 );
	// remove_key( &bt_root, 18 );


	//测试删除数据 示例 2
	// remove_key( &bt_root, 20 );
	// remove_key( &bt_root, 7 );


	//测试find_max函数
	// int pos,key = -1;
	// bnode * want = find_max(bt_root -> children[2], &pos, &key);
	// if(pos != -1)
	// {
	// 	printf("%d,%d\n",pos,want -> keys[pos]);
	// }
	// else
	// {
	// 	printf("%s\n","没找到元素");
	// }

	printf("层级打印:\n");
	hierarchy_traversal_recurse(bt_root, 1);

	printf("普通打印:\n");
	print_btree(bt_root);

	return 1;
}