Daraxtlar grafning xususiy holati sifatida
B daraxtda element qo’shish
Download 0.92 Mb.
|
DARAXTLAR GRAFNING XUSUSIY HOLATI SIFATIDA
- Bu sahifa navigatsiya:
- Mavzu yuzasidan savollar
- Mustaqil ishlash uchun masalalar
B daraxtda element qo’shish
struct btree *btree_insert(struct btree *tree, int key, int value) { struct btree *newroot; if (tree == NULL) { tree = btree_create(); tree->nkeys = 1; tree->key[0] = key; tree->value[0] = value; return tree; } if (tree->nkeys == 2 * T - 1) { newroot = btree_create(); /* Create empty root */ newroot->leaf = 0; newroot->child[0] = tree; btree_split_node(tree, newroot, 0); return btree_insert_nonfull(newroot, key, value); } return btree_insert_nonfull(tree, key, value); } B-daraxtda tugunni ajratish void btree_split_node(struct btree *node,
struct btree *btree_insert_nonfull( struct btree *node, int key, int value) { int i; i = node->nkeys; if (node->leaf) { for (i = node->nkeys - 1; i > 0 && key < node->key[i]; i--) { node->key[i + 1] = node->key[i] } node->key[i + 1] = key; node->nkeys++; } else { for (i = node->nkeys - 1; i > 0 && key < node->key[i]; ) { i--; } i++; if (node->child[i]->nkeys == 2 * T - 1) { btree_split_node(node->child[i], node, i); if (key > node->key[i]) i++J } node = btree_insert_nonfull(node->child[i], key, value); } return node; } int main() { struct btree *tree; tree = btree_insert(NULL, 3, 0); tree = btree_insert(tree, 12, 0); tree = btree_insert(tree, 9, 0); tree = btree_insert(tree, 18, 0); return 0; } Mavzu yuzasidan savollar: 2. B daraxtda izlash qanday amalga oshiriladi? 3. B daraxtda element o’chirish qanday amalga oshiriladi? 4. B daraxtda element qo’shish qanday amalga oshiriladi? 5. B-daraxt ma’lumotlar strukturasi qo’llaniladigan sohalarga qaysilar kiradi? Mustaqil ishlash uchun masalalar: 1. B daraxtida element olib tashlash funksiyasini yozing va uni daraxtda qo’llang 2. B-daraxtda element qo’shish funksiyasini optimallashtiring Download 0.92 Mb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling