Hjælp Counter til binary trees
Jeg sidder og er igang med at løse en opgave og løber hovedet mod en mur. Problemet består i at jeg skal lave en counter til et binært træ, denne counter skal tælle højden af træet, altså ikke antallet af blade:-(. Metoden jeg har arbejdet på hedder skrivhoejde
Vedlagt min kode:
class BTrae
{
int hoejde = 0;
int taeller = 0;
private Node root = null;
private class Node
{
int data;
Node left, right;
public Node(int d)
{
data = d;
left = null;
right = null;
}
}
//indsæt iterativt
public void indsaetIterativt(int nydata)
{
if (root == null)
{
root = new Node(nydata);
return;
}
else
{
Node temp = root;
Node følger = null;
while (temp != null)
{
if (temp.data==nydata)
return;
følger = temp;
if (nydata < temp.data)
temp = temp.left;
else
temp = temp.right;
}
if (følger.data > nydata)
følger.left = new Node(nydata);
else
følger.right = new Node(nydata);
}
}
//public interface til inorder sortering
public void inorder()
{
inorder(root);
}
private void inorder(Node trae)
{
if (trae!=null)
{
inorder(trae.left);
System.out.print(trae.data+\" \");
inorder(trae.right);
}
}
//public interface til preorder sortering
public void preorder()
{
preorder(root);
}
private void preorder(Node trae)
{
if (trae!=null)
{
System.out.print(trae.data+\" \");
preorder(trae.left);
preorder(trae.right);
}
}
//public interface til postorder sortering
public void postorder()
{
postorder(root);
}
private void postorder(Node trae)
{
if (trae!=null)
{
postorder(trae.left);
postorder(trae.right);
System.out.print(trae.data+\" \");
}
}
/*Her er tælleren
*/
public void SkrivHoejde()
{
SkrivHoejde(root);
}
private void SkrivHoejde(Node trae)
{
System.out.println(\"taeller\"+taeller);
if (trae != null)
{
SkrivHoejde(trae.left);
if (trae.left != null){taeller++;}
SkrivHoejde(trae.right);
if (trae.right != null){taeller++;}
}
if (taeller > hoejde)
{
hoejde = taeller;
System.out.println(\"hoejde \"+hoejde);
}
}
public void skrivSti(int tal)
{
Node temp=root;
while (temp.data!=tal)
{
System.out.print(temp.data+\" \");
if (temp.data>tal) temp=temp.left;
else temp=temp.right;
}
System.out.println(temp.data);
}
}
public class KoerBTrae
{
public static void main(String[] args) throws Exception
{
BTrae bt = new BTrae();
bt.indsaetIterativt(-1);
bt.indsaetIterativt(10);
bt.indsaetIterativt(-50);
bt.indsaetIterativt(-20);
bt.indsaetIterativt(50);
bt.indsaetIterativt(4);
bt.indsaetIterativt(5);
bt.indsaetIterativt(6);
System.out.println(\"Inorder\");
bt.inorder();
System.out.println();
System.out.println(\"Preorder\");
bt.preorder();
System.out.println();
System.out.println(\"Postorder\");
bt.postorder();
System.out.println();
System.out.println(\"Sti til 50 (inkl.)\");
bt.skrivSti(50);
bt.SkrivHoejde();
}
}