2017-03-02 4 views
0

Ich versuche trenary tree zu implementieren, aber ich bekomme den folgenden Fehler und ich bin mir nicht sicher, was das Problem ist, da mein Konstruktor eine ganzzahlige Eingabe erfordert.Fehler in der ternären Baumimplementierung

Fehler:

Trenarytree.java:46: error: constructor Trenarytree in class Trenarytree cannot be applied to given types; 
    Trenarytree tree = new Trenarytree(1); 
        ^

erforderlich: keine Argumente gefunden: int Grund: Ist- und formale Argument Listen unterscheiden sich in der Länge 1 Fehler

Code:

import java.io.*; 
import java.util.*; 

public class Trenarytree { 

public int y = 0; 
public int count = 0; 
private static Node root; 

public void Trenarytree(int data) 
{ 
    root = new Node(data); 
} 

public void add(Node parent, Node child) 
{ 
    if (parent.getLeft() == null) 
    { 
     parent.setLeft(child); 
    } 
    else if (parent.getMiddle() == null){ 
     parent.setMiddle(child); 
    } 
    else 
    { 
     parent.setRight(child); 
    } 
} 

public Node sum(Node z){ 
    if (z.getLeft()!=null) y++; 
    if (z.getRight()!=null) y++; 
    if (z.getMiddle()!=null) y++; 
    if (y % 2 ==0){ 
     count++; 
    y=0;}; 
} 

public static void main(String[] args) { 
    /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ 
    Scanner sc = new Scanner (System.in); 
    int M = sc.nextInt(); 
    int N = sc.nextInt(); 
    int k, l; 
    Node[] array; 
    Trenarytree tree = new Trenarytree(1); 
    array[1] = new Node(1); 
    for (int i = 0; i < N; i++){ 
     k = sc.nextInt(); 
     l = sc.nextInt(); 
     array[k] = new Node(k); 
     if (i==1) tree.add(root, array[k]); 
      else tree.add(array[l], array[k]); 

    } 
} 
} 

class Node { 
private int key; 
private Node left; 
private Node right; 
private Node middle; 

Node (int key) { 
    this.key = key; 
    right = null; 
    left = null; 
    middle = null; 
} 

public void setKey(int key) { 
    this.key = key; 
} 

public int getKey() { 
    return key; 
} 

public void setLeft(Node left) { 
    this.left = left; 
} 


public Node getLeft() { 
    return left; 
} 

public void setMiddle(Node middle) { 
    this.middle = middle; 
} 

public Node getMiddle() { 
    return middle; 
} 
public void setRight(Node right) { 
    this.right = right; 
} 

public Node getRight() { 
    return right; 
} 

} 
+0

ternary nicht trenary https://en.wikipedia.org/wiki/Ternary_tree – javadba

+0

sollten Sie nie importieren. * In den Bibliotheken keine gute Praxis –

+0

@RajHassani Aussagen wie "Sie sollten nie" sind schwer zu verteidigen. Kennen Sie alle Szenarien? Es ist schließlich 'java.io/java.util'. Es gibt wenig/keine Sorge darüber," wo kommt Klasse X her? "Hier. – javadba

Antwort

3

Es ist die Leer:

public Trenarytree(int data) 

Damit ist es eine Methode, ohne sie ist es ein Konstruktor.

+0

Alle machen jetzt Sinn. Vielen Dank –

2

Entfernen Sie die ungültige Konstruktor Trenarytree Definition. Der Konstruktor sollte nichts zurückgeben, sondern ein konstruiertes Objekt zurückgeben.