<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-6%3Aasin185</id>
	<title>SE250:lab-6:asin185 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-6%3Aasin185"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-6:asin185&amp;action=history"/>
	<updated>2026-06-04T16:44:46Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.kram.nz/index.php?title=SE250:lab-6:asin185&amp;diff=7052&amp;oldid=prev</id>
		<title>Mark: 18 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-6:asin185&amp;diff=7052&amp;oldid=prev"/>
		<updated>2008-11-03T05:20:03Z</updated>

		<summary type="html">&lt;p&gt;18 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Lab 6 =&lt;br /&gt;
== Intro ==&lt;br /&gt;
In this lab we had to explore Search trees , and the order of the elements inserted. We had to conduct this lab so that we could find relationships of expected height and the insertion of the elements.&lt;br /&gt;
&lt;br /&gt;
== Task 1 ==&lt;br /&gt;
 int main(){&lt;br /&gt;
 	 &lt;br /&gt;
 	int h, i;&lt;br /&gt;
 	Node *randomTree;&lt;br /&gt;
 	printf(&amp;quot;Size, Height\n&amp;quot;); &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 	for (i = 0; i &amp;lt; 1000; i=i+5){&lt;br /&gt;
 	randomTree = makeRandomTree(i);&lt;br /&gt;
 	h = height(randomTree);&lt;br /&gt;
 	printf(&amp;quot;%d\n&amp;quot;, h);&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	return 0;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Task 2 ==&lt;br /&gt;
&lt;br /&gt;
==== Minimum ====&lt;br /&gt;
 Node* minimum( Node* node ) {&lt;br /&gt;
 	if (node == empty)&lt;br /&gt;
 		return node;&lt;br /&gt;
 	for (; node-&amp;gt;left != empty; node = node-&amp;gt;left);&lt;br /&gt;
 	return node;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Maximum ====&lt;br /&gt;
 Node* maximum( Node* node ) {&lt;br /&gt;
 	if (node == empty)&lt;br /&gt;
 		return node;&lt;br /&gt;
 	for (; node-&amp;gt;right != empty; node = node-&amp;gt;right);&lt;br /&gt;
 	return node;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Task 3 ==&lt;br /&gt;
==== Look up function ====&lt;br /&gt;
 Node* lookup( int key, Node* node ) { &lt;br /&gt;
 &lt;br /&gt;
 	while(node != empty){&lt;br /&gt;
 		if (node == empty)&lt;br /&gt;
  			return node;&lt;br /&gt;
 &lt;br /&gt;
 		if (node-&amp;gt;key == key){&lt;br /&gt;
 			return node;&lt;br /&gt;
 		}else if(node-&amp;gt;key &amp;lt; key){&lt;br /&gt;
 			node = node-&amp;gt;right;&lt;br /&gt;
 		}else{&lt;br /&gt;
 			node = node-&amp;gt;left;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Task 4 ==&lt;br /&gt;
==== next_pre ====&lt;br /&gt;
&lt;br /&gt;
 Node* next_pre( Node* node ) {&lt;br /&gt;
     if (node == empty){&lt;br /&gt;
 	return empty;&lt;br /&gt;
     }&lt;br /&gt;
     if ( (*node)-&amp;gt;right == empty){&lt;br /&gt;
 	return node;&lt;br /&gt;
     }&lt;br /&gt;
     else{&lt;br /&gt;
 	node = (*node)-&amp;gt;right;&lt;br /&gt;
 	return (minimum(node));&lt;br /&gt;
     }&lt;br /&gt;
 	    &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== prev_pre====&lt;br /&gt;
&lt;br /&gt;
 Node* prev_pre( Node* node ) {&lt;br /&gt;
     if (node == empty){&lt;br /&gt;
 	return empty;&lt;br /&gt;
     }&lt;br /&gt;
     if ( (*node)-&amp;gt;left == empty){&lt;br /&gt;
 	return node;&lt;br /&gt;
     }&lt;br /&gt;
     else{&lt;br /&gt;
 	node = (*node)-&amp;gt;left;&lt;br /&gt;
 	return (maximum(node));&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
== Task 5 ==&lt;br /&gt;
 if( node-&amp;gt;left == empty &amp;amp;&amp;amp; node-&amp;gt;right == empty ) { //leaf&lt;br /&gt;
 	while(node-&amp;gt;parent != empty) { &lt;br /&gt;
 	    if( node == node-&amp;gt;parent-&amp;gt;left ) &lt;br /&gt;
 		return node-&amp;gt;parent;&lt;br /&gt;
 	    node = node-&amp;gt;parent;&lt;br /&gt;
 	}&lt;br /&gt;
 	return empty;&lt;br /&gt;
 }&lt;br /&gt;
     &lt;br /&gt;
 else { //parent&lt;br /&gt;
 	if( node-&amp;gt;right != empty)&lt;br /&gt;
 	    return minimum(node-&amp;gt;right);&lt;br /&gt;
 	return node-&amp;gt;parent;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Task 6 ==&lt;br /&gt;
&amp;#039;&amp;#039;#include &amp;lt;math.h&amp;gt; had to be included in this so that the function could operate properly &amp;#039;&amp;#039;&lt;br /&gt;
     int height = ceil( log( n + 1 ) / log( 2 ) - 1 );&lt;br /&gt;
     Node* newTree = mkNode( pow(2, height), empty );&lt;br /&gt;
     int i,j;&lt;br /&gt;
     i = height - 1;&lt;br /&gt;
     while( i &amp;gt;= 0 ) {&lt;br /&gt;
 	j = 0;&lt;br /&gt;
 	while( pow(2, i) + j * pow(2, (i+1)) &amp;lt; n ) {&lt;br /&gt;
 	    insert( pow(2, i) + j * pow(2, (i+1)), &amp;amp;newTree );&lt;br /&gt;
 	    j++;&lt;br /&gt;
 	}&lt;br /&gt;
 	i--;&lt;br /&gt;
     }&lt;br /&gt;
     return newTree;&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
This lab was quite long, i only finished up to exercise 3 in the allocated time and then tried these later on. I&amp;#039;m not 100% sure they will be correct but Ive tried my best to get it done.&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>