나는 정렬되지 않은 숫자 목록이있는 txt 파일이 있습니다. 번호 목록을 가져 와서 배열을 만들었습니다. 그래서 지금 나는 그 숫자들로 나무를 만들고 그것들을 왼쪽과 오른쪽에 기초하여 정렬하려고 노력하고 있습니다. 지금은 인쇄하지만 정렬은 안됩니다. 나는 나무가 바르게 만들어지지 않고 있다고 확신하지만 그것을 고치는 방법을 모르겠습니다. 나는 또한 모든 중복을 추적하고 싶다. 다른 말로하면 나는 어떤 복제물도 인쇄하고 싶지는 않지만 그 대신에 얼마나 많은 사본이 있는지 추적 할 수 있습니다. 도움이나 조언을 주시면 감사하겠습니다. 미리 감사드립니다. - 메서드 배열에 숫자 배열을 전달합니다. dealArray()는 int로 변환합니다. 거기에서 그 #가 findDuplicate()에 전달되었는데, 나는 그것을 수행해야하는지 확신 할 수 없다.트리 만들기 및 숫자 정렬
BigTree 등급 :
public class bigTree {
int data; int frequency;
bigTree Left, Right;
public bigTree makeTree(int x) {
bigTree p;
p = new bigTree();
p.data = x;
p.Left = null;
p.Right = null;
return p;
}
public void setLeft(bigTree t, int x) {
if (t.Left != null) {
System.out.println("Error");
}
else {
bigTree q;
q = t.Left;
q = makeTree(x);
}
}
public void setRight(bigTree t, int x) {
if (t.Right != null) {
System.out.println("Error");
} else {
bigTree q;
q = t.Right;
q = makeTree(x);
}
}
public void findDuplicate(int number) {
bigTree tree, p, q;
frequency = 0;
tree = makeTree(number);
//while (//there are still #'s in the list) { //1st while()
p = tree;
q = tree;
while (number != p.data && q != null) { //2nd while()
p = q;
if (number < p.data) {
q = q.Left;
} else {
q = q.Right;
}
} //end of 2nd while()
if (number == p.data) {
Sort(p);
//System.out.println(p.data);
frequency++;
}
else {
if (number < p.data) {
setLeft(p,number);
}
else {
setRight(p, number);
}
}
//} // End of 1st while()
}
public void Sort(bigTree t) {
if (t.Left != null) {
Sort(t.Left);
}
System.out.println(t.data);
if (t.Right != null) {
Sort(t.Right);
}
//Possible print
}
public void dealArray(String[] x) {
int convert;
for (int i = 0; i < x.length; i++){
convert = Integer.parseInt(x[i]);
findDuplicate(convert);
// System.out.println(x[i]);
}
}
'코드에서 Dumbass'를 int로 다시 변경 // ?? –
오, 오 하하, 이전에 어떤 이유로 나는 이름이 아닌 숫자의 목록이라고 생각하여 모든 것을 문자열로 만들었습니다. 미안한데 그 – TMan
이제 몇 분 동안 귀하의 코드를 들여다 보았습니다. 그러나 나는 당신이 성취하고자하는 것을 얻지 못한다고 고백해야합니다. 예를 들어'sort' 메쏘드 (소문자 메쏘드/필드 이름을 사용하고 대문자 클래스 이름을 사용하십시오)는 트리 인쇄를 제외하고는 아무것도하지 않습니다. 그리고'findDuplicate' 안에는 감각적이지 않은 많은 것을합니다 (새로운 트리를 만들고 그것을 가로 지르며, 거의 비어 있습니다). 코드를 정리하고 알고리즘을 작동 시키십시오 (적어도 코드 내부에 있지 않으면 머리를 쓰십시오). – Howard