Changes in kernel/test/avltree/avltree1.c [a35b458:9d58539] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/test/avltree/avltree1.c
ra35b458 r9d58539 56 56 { 57 57 avltree_node_t *tmp; 58 58 59 59 if (!node) 60 60 return NULL; 61 61 62 62 if (node->lft) { 63 63 tmp = test_tree_parents(node->lft); … … 81 81 { 82 82 int h1, h2, diff; 83 83 84 84 if (!node) 85 85 return 0; 86 86 87 87 h1 = test_tree_balance(node->lft); 88 88 h2 = test_tree_balance(node->rgt); 89 89 diff = h2 - h1; 90 90 91 91 if ((diff != node->balance) || ((diff != -1) && (diff != 0) && (diff != 1))) 92 92 TPRINTF("Bad balance\n"); 93 93 94 94 return ((h1 > h2) ? (h1 + 1) : (h2 + 1)); 95 95 } … … 110 110 return; 111 111 } 112 112 113 113 if (node == NULL) 114 114 return; 115 115 116 116 TPRINTF("%" PRIu64 "[%" PRIu8 "]", node->key, node->balance); 117 117 if (node->lft != NULL || node->rgt != NULL) { 118 118 TPRINTF("("); 119 119 120 120 print_tree_structure_flat(node->lft, level + 1); 121 121 if (node->rgt != NULL) { … … 123 123 print_tree_structure_flat(node->rgt, level + 1); 124 124 } 125 125 126 126 TPRINTF(")"); 127 127 } … … 131 131 { 132 132 int i; 133 133 134 134 for (i = 0; i < NODE_COUNT - 1; i++) 135 135 avltree_nodes[i].par = &avltree_nodes[i + 1]; 136 136 137 137 avltree_nodes[i].par = NULL; 138 138 139 139 /* 140 140 * Node keys which will be used for insertion. Up to NODE_COUNT size of 141 141 * array. 142 142 */ 143 143 144 144 /* First tree node and same key */ 145 145 avltree_nodes[0].key = 60; 146 146 avltree_nodes[1].key = 60; 147 147 avltree_nodes[2].key = 60; 148 148 149 149 /* LL rotation */ 150 150 avltree_nodes[3].key = 50; 151 151 avltree_nodes[4].key = 40; 152 152 avltree_nodes[5].key = 30; 153 153 154 154 /* LR rotation */ 155 155 avltree_nodes[6].key = 20; … … 157 157 avltree_nodes[8].key = 25; 158 158 avltree_nodes[9].key = 25; 159 159 160 160 /* LL rotation in lower floor */ 161 161 avltree_nodes[10].key = 35; 162 162 163 163 /* RR rotation */ 164 164 avltree_nodes[11].key = 70; 165 165 avltree_nodes[12].key = 80; 166 166 167 167 /* RL rotation */ 168 168 avltree_nodes[13].key = 90; 169 169 avltree_nodes[14].key = 85; 170 170 171 171 /* Insert 0 key */ 172 172 avltree_nodes[15].key = 0; 173 173 avltree_nodes[16].key = 0; 174 174 175 175 /* Insert reverse */ 176 176 avltree_nodes[17].key = 600; … … 178 178 avltree_nodes[19].key = 400; 179 179 avltree_nodes[20].key = 300; 180 180 181 181 for (i = 21; i < NODE_COUNT; i++) 182 182 avltree_nodes[i].key = i * 3; 183 183 184 184 first_free_node = &avltree_nodes[0]; 185 185 } … … 188 188 { 189 189 avltree_node_t *node; 190 190 191 191 node = first_free_node; 192 192 first_free_node = first_free_node->par; 193 193 194 194 return node; 195 195 } … … 199 199 unsigned int i; 200 200 avltree_node_t *newnode; 201 201 202 202 avltree_create(tree); 203 203 204 204 TPRINTF("Inserting %zu nodes...", node_count); 205 205 206 206 for (i = 0; i < node_count; i++) { 207 207 newnode = alloc_avltree_node(); 208 208 209 209 avltree_insert(tree, newnode); 210 210 test_tree_parents(tree->root); 211 211 test_tree_balance(tree->root); 212 212 } 213 213 214 214 TPRINTF("done.\n"); 215 215 } … … 220 220 avltree_node_t *delnode; 221 221 unsigned int i; 222 222 223 223 switch (node_position) { 224 224 case 0: 225 225 TPRINTF("Deleting root nodes..."); 226 226 227 227 while (tree->root != NULL) { 228 228 delnode = tree->root; … … 234 234 case 1: 235 235 TPRINTF("Deleting nodes according to creation time..."); 236 236 237 237 for (i = 0; i < node_count; i++) { 238 238 avltree_delete(tree, &avltree_nodes[i]); … … 242 242 break; 243 243 } 244 244 245 245 TPRINTF("done.\n"); 246 246 } … … 249 249 { 250 250 unsigned int i = 0; 251 251 252 252 TPRINTF("Deleting minimum nodes..."); 253 253 254 254 while (tree->root != NULL) { 255 255 i++; … … 258 258 test_tree_balance(tree->root); 259 259 } 260 260 261 261 if (i != node_count) 262 262 TPRINTF("Bad node count. Some nodes have been lost!\n"); 263 263 264 264 TPRINTF("done.\n"); 265 265 } … … 270 270 test_tree_insert(&avltree, NODE_COUNT); 271 271 test_tree_delete(&avltree, NODE_COUNT, 0); 272 272 273 273 alloc_avltree_node_prepare(); 274 274 test_tree_insert(&avltree, NODE_COUNT); 275 275 test_tree_delete(&avltree, NODE_COUNT, 1); 276 276 277 277 alloc_avltree_node_prepare(); 278 278 test_tree_insert(&avltree, NODE_COUNT); 279 279 test_tree_delmin(&avltree, NODE_COUNT); 280 280 281 281 return NULL; 282 282 }
Note:
See TracChangeset
for help on using the changeset viewer.