2016-12-12 1 views
0

Ich muss jedes Wort in einer Textdatei nehmen und sie zu einem Baum hinzufügen. Mein erstes Problem ist nicht zu wissen, wie man mit Dateien in Java arbeitet, und dann muss ich Wörter einfügen können, aber wenn es ein doppeltes Wort gibt, erhöht es einen Zähler für dieses Wort, anstatt das Wort erneut einzufügen. Dies sind die Einsatzmethoden habe ich:Einfügen von Wörtern aus Textdatei in Baum (Java)

public void insert(String txt) 
    { 
    this.root = insert(root, new Node(txt)); 
    } 

    private Node insert(Node parent, Node newNode) 
    { 
    if (parent == null) 
    { 
     return newNode; 
    } 
    else if (newNode.data.compareTo(parent.data) > 0) 
    { 
     parent.right = insert(parent.right, newNode); 
    } 
    else if (newNode.data.compareTo(parent.data) < 0) 
    { 
     parent.left = insert(parent.left, newNode); 
    } 
    return parent; 
    } 

Kann mir jemand helfen?

Antwort

0

Sie können der Klasse Node eine Instanzvariable namens count hinzufügen, so dass die Node sich daran erinnern kann, wie oft ein Stück Text angezeigt wurde. Sie müssen den Node-Konstruktor auf count auf 1 setzen.

Dann können Sie so etwas wie dies (siehe fettgedruckten Teil für das, was anders machen) tun:


    public void insert(String txt) 
    { 
     root = insert(root, new Node(txt)); 
    } 

    private Node insert(Node parent, Node newNode) 
    { 
     if (parent == null) 
     { 
     return newNode; 
     } 

     final int comparison = newNode.data.compareTo(parent.data) 
     if (comparison > 0) 
     { 
     parent.right = insert(parent.right, newNode); 
     } 
     else if (comparison < 0) 
     { 
     parent.left = insert(parent.left, newNode); 
     } 
     else { // If the new text matches the text of this node. parent.count++; } 
     return parent; 
    } 

+0

Dies trägt dazu bei, danke – peppercumin