בעיה בתוכנית בJAVA (לא מבין מהי...) - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

בעיה בתוכנית בJAVA (לא מבין מהי...)


SweeT_EviL

Recommended Posts

זה התוכנית הראשית:

package mypackage;

public class LongestKoter

{

public static void main(String[] args)

{

Tree t=new Tree(50);

for(int i = 0; i<20 ; i++)

insert(t,(int)((Math.random()*100)+1));

print(t);

}

public static void insert(Tree t, int x)

{

if(x<= t.getInfo() && t.getLeft()==null)

t.setLeft(new Tree(x));

if(x> t.getInfo() && t.getRight()==null)

t.setRight(new Tree(x));

if(x<= t.getInfo() && t.getLeft()!=null)

insert(t,x);

if(x> t.getInfo() && t.getRight()!=null)

insert(t,x);

}

public static void print(Tree t)

{

if(t.getLeft()!=null)

print(t.getLeft());

System.out.println(t.getInfo()+"/n");

if(t.getRight()!=null)

print(t.getRight());

}

}

וזה המחלקה TREE שאני יוצר ממנה עצמים

package mypackage;

public class Tree

{

private int info;

private Tree left;

private Tree right;

public Tree(int x)

{

this.info=x;

this.left=null;

this.right=null;

}

public Tree(int x, Tree left , Tree right)

{

this.info=x;

this.left=left;

this.right=right;

}

public int getInfo()

{

return(this.info);

}

public void setInfo(int x)

{

this.info=x;

}

public Tree getLeft()

{

return(this.left);

}

public Tree getRight()

{

return(this.right);

}

public void setLeft(Tree left)

{

this.left=left;

}

public void setRight(Tree right)

{

this.right=right;

}

}

תריצו קומפילציה תראו מה הבעיה..

קישור לתוכן
שתף באתרים אחרים

יש לך באג בפונקציה insert


public static void insert(Tree t, int x)
{
if(x<= t.getInfo() && t.getLeft()==null)
t.setLeft(new Tree(x));
if(x> t.getInfo() && t.getRight()==null)
t.setRight(new Tree(x));
if(x<= t.getInfo() && t.getLeft()!=null)
insert(t.getLedt(),x);
if(x> t.getInfo() && t.getRight()!=null)
insert(t.getRight(),x);
}

קישור לתוכן
שתף באתרים אחרים

יש לך באג בפונקציה insert


public static void insert(Tree t, int x)
{
if(x<= t.getInfo() && t.getLeft()==null)
t.setLeft(new Tree(x));
if(x> t.getInfo() && t.getRight()==null)
t.setRight(new Tree(x));
if(x<= t.getInfo() && t.getLeft()!=null)
insert(t.getLedt(),x);
if(x> t.getInfo() && t.getRight()!=null)
insert(t.getRight(),x);
}

יש לך מושג מהי?

קישור לתוכן
שתף באתרים אחרים

אני הייתי רושם:

	if(x<= t.getInfo())
if(t.getLeft()==null)
t.setLeft(new Tree(x));
else
insert(t.getLeft(),x);
else
if(t.getRight()==null)
t.setRight(new Tree(x));
else
insert(t.getRight(),x);

ככה זה ברור יותר.

כל זה בהנחה שT הוא לא NULL. אתה יכול לזרוק אקספשיון אם הוא כן.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...