All pastes #975992 Raw Edit

Miscellany

public text v1 · immutable
·published 2008-04-07 21:30 UTC
rendered paste body
//********************************************************************************
// Louis Gliozzi		2/19/08		To Do List
// This program will create a to do list and associate an estimated time it will
// take to complete each task. This holds the variables for that list.
//*********************************************************************************

public class StudentTree
{
	StudentNode root;

	public StudentTree()
	{
		root = null;
	}

	//check if a child is a leaf or not
	public boolean isLeaf(StudentNode x)
	{
		if((x.lchild == null) && (x.rchild == null))
			return true;
		else
			return false;
	}

	//check if the tree is empty
	public boolean isEmpty()
	{
		if (root == null)
			return true;
		else
			return false;
	}

	//add a StudentNode
	public void add(String name, double GPA)
	{
		StudentNode ptr;

		//case for an empty tree
		if(isEmpty())
		{
			StudentRecord studentFile = new StudentRecord(name, GPA);
			root = new StudentNode(studentFile, null, null);
			return;
		}

		ptr = root;
		while (true)
		{
			if(name.compareToIgnoreCase(ptr.record.name) < 0)
			{
				//goes on left side
				if (ptr.lchild == null)
				{
					ptr.lchild = new StudentNode(new StudentRecord(name, GPA), null, null);
					return;
				}
				else
				{
					ptr = ptr.lchild;
				}
			}
			else
			{
				//goes on right side
				if (ptr.rchild == null)
				{
					ptr.rchild = new StudentNode(new StudentRecord(name, GPA), null, null);
					return;
				}
				else
				{
					ptr = ptr.rchild;
				}
			}
		}
	}

	//find GPA
	public String find(String name)
	{
		StudentNode ptr;
		final String notfound = "GPA not found";

		if(isEmpty())
		{
			return notfound;
		}
		ptr = root;
		while (ptr != null)
		{
			if(name.equalsIgnoreCase(ptr.record.name))
			{
				return Double.toString(ptr.record.GPA);
			}
			else if (name.compareToIgnoreCase(ptr.record.name) < 0)
			{
				ptr = ptr.lchild;
			}
			else
			{
				ptr = ptr.rchild;
			}
		}
		return notfound;
	}

	//print all students in alphabetical order
	public String printAlphabetical()
	{
		if (isEmpty())
		{
			return "No students on file";
		}
		else
		{
			return recursivePrint(root);
		}
	}
	public String recursivePrint(StudentNode ptr)
	{
		String retString = "";

		//print lchild
		if (ptr.lchild != null)
		{
			retString = recursivePrint(ptr.lchild);
		}
		//print me
		retString = retString + ptr.record.name + "\t" + ptr.record.GPA;
		//print rchild
		if (ptr.rchild != null)
		{
			retString = recursivePrint(ptr.rchild);
		}
		return retString;
	}
	//print all students in reverse alphabetical order
	public String printReverseAlphabetical()
	{
		if (isEmpty())
		{
			return "No students on file";
		}
		else
		{
			return reverseRecursivePrint(root);
		}
	}
	public String reverseRecursivePrint(StudentNode ptr)
	{
		String retString = "";

		//print rchild
		if (ptr.rchild != null)
		{
			retString = recursivePrint(ptr.rchild);
		}
		//print me
		retString = retString + ptr.record.name + "\t" + ptr.record.GPA;
		//print lchild
		if (ptr.lchild != null)
		{
			retString = recursivePrint(ptr.lchild);
		}

		return retString;
	}

	//change GPA
	public void changeGPA(String name, double GPA)
	{
		StudentNode ptr;
		final String notfound = "Student not found";

		if(isEmpty())
		{
			add(name, GPA);
			return;
		}
		ptr = root;
		while (ptr != null)
		{
			if(name.equalsIgnoreCase(ptr.record.name))
			{
				ptr.record.GPA = GPA;
			}
			else if (name.compareToIgnoreCase(ptr.record.name) < 0)
			{
				ptr = ptr.lchild;
			}
			else
			{
				ptr = ptr.rchild;
			}
		}
		return;
	}

	//average GPA
	public String average()
	{
		if (isEmpty())
		{
			return "No students on file";
		}
		else
		{
			return Double.toString(recursiveGPA(root));
		}
	}

	public double recursiveGPA(StudentNode ptr)
	{
		double totalGPA	= 0;
		int iterations	= 0;

		//add lchild
		if (ptr.lchild != null)
		{
			totalGPA = recursiveGPA(ptr.lchild);
		}
		//add me
		totalGPA = totalGPA + ptr.record.GPA;
		iterations++;
		//add rchild
		if (ptr.rchild != null)
		{
			totalGPA = recursiveGPA(ptr.rchild);
		}
		return totalGPA/iterations;
	}
}