SE250:lab-6:twon069
Jump to navigation
Jump to search
Task 1
After looping through 100 times, the height of the tree seen to increasing less and less while having large variation between a logarithmic graph.
for (i = 0; i<100; i++){
x = makeRandomTree(i);
printf("size = %d height = %d\n", i, height(x));
}
Task 2
Sounds easy, basically traverse through to find the right most or left most node to find the minimum or maximum
Node* minimum( Node* node ) {
/* TODO */
while(node->left != empty){
node = node->left;
}
return node;
}
Node* maximum( Node* node ) {
/* TODO */
while(node->right != empty){
node = node->right;
}
return node;
}
- However after testing the code, it seen wrong... giving me a weird number each time, I'm not sure whether it is the implementation thats wrong, or the tree is showing it wrong. The tree was REALLY and i mean REALLY hard to understand, it doesn't even look like a tree...
- After few twitching with the code, I realize I wasn't showing the correct number, and changing &y->key to y->key did the trick. (I should relearn pointers... sigh...)
Task 3
Node* lookup( int key, Node* node ) {
/* TODO */
while (node != empty) {
if (key > node->key) {
node = node->right;
} else if (key < node->key) {
node = node->left;
} else {
return node;
}
}
return empty;
}
- This was easy as well, basiclly just a set of rules and which way to go depending on whether the key is larger or smaller at current node.
Task 4
- Pre-order, after fiddling around through my notes, it meant traversing tree this way "root->left->right"