2016-04-06 15 views
-1

Ich habe einen Huffman-Baum erstellt, und ich muss nun den Huffman-Baum durchqueren, um eine Nachricht zu dekodieren. Ich schreibe die Methode, um den Huffman-Baum zu durchqueren, und ich kann nicht auf den aktuellen Knoten meines Baumes zugreifen, obwohl ich ihn an meinem Baum vorbeigeführt habe. Jede Hilfe würde geschätzt werden - unhöfliche Kommentare sind nicht.Ich kann nicht auf Baumstamm zugreifen

 //Code that creates huffman tree not shown 
//method to find traverse at very bottom 
    public static class Tree implements Comparable<Tree>{ 
    Node root; 


public Tree(Tree t1, Tree t2){ 
    root = new Node(); 
    root.left = t1.root; 
    root.right = t2.root; 
    root.weight = t1.root.weight + t2.root.weight; 
} 

public Tree(int weight, char element){ 
    root = new Node(weight, element); 
} 

@Override 
public int compareTo(Tree t){ 
    if(root.weight < t.root.weight){ 
     return 1; 
    }else if(root.weight == t.root.weight){ 
     return 0; 
    }else 
     return -1; 
} 

public class Node{ 
    char element; 
    int weight; 
    Node left; 
    Node right; 
    String code = ""; 

    public Node(){ 

    } 

    public Node(int weight, char element){ 

     this.weight = weight; 
     this.element = element; 
    } 

    public void findLetter(Tree tree){ 
    char letter; 


    Node.current = root; //Red lines involving everything with Node or current from here on 
    if(code[i] == 0){ 
     if(current.left == null){ 
     letter = current.element; 
    }else{ 
     current = Node.left; 

    } 
}else if(code[i] == 1){ 
    if(current.right == null){ 
     letter = current.element; 
    }else{ 
     current = Node.right; 
    } 
} 
    System.out.printf(""+ letter); 
} 
+0

Der Baum wird aus einer Analyse der Häufigkeit von Binärzeichen erstellt. Ich glaube nicht, dass es relevant ist, den gesamten Code, der die Frequenz findet, anzuzeigen, und erstellt den Baum, ect. Die Traversierung des Baumes erfolgt in der Methode findLetter() am Ende des Codes. –

Antwort

1
Node.current = root; 

Es gibt kein Mitglied current in Node-Klasse genannt. Und selbst wenn es existiert current = root ist der Code, um die current zuweisen.

Verwandte Themen