2014-11-05 61 views
-2

我想要使用遞歸方法來遍歷哈夫曼樹,並且爲每個葉節點添加一個代碼記錄到一個ArrayList。這是我迄今爲止所擁有的。在Java中遍歷霍夫曼樹

private void traverse(ArrayList<Code> code, BinaryTreeNode<Letter> node, 
        String prefix) { 
     // TODO: Fill in this method 
    if (root!=null){ 
     traverse(code, node.left, prefix); 
    } 
    if (root!=null){ 
     traverse(code, node.right, prefix); 
    } 
    if(node.left==null && node.right==null){ 
     code.add(node); 
    } 

code.add(node)也給出錯誤。

回答

0

ArrayList code是一種Code,並在最後一行添加的是node type objectcode。什麼你需要的是改變你的代碼以匹配以下內容:

一件事是包括所有節點的值(假設你要添加的每個節點的值)

private void traverse(ArrayList<Letter> code, BinaryTreeNode<Letter> node, 
        String prefix) { 
     // TODO: Fill in this method 
    if(node==null) return; //return if this node is empty. 
    if (node!=null){ 
     traverse(code, node.left, prefix); 
    } 
    if (node!=null){ 
     traverse(code, node.right, prefix); 
    } 
    //if you want to include this node value into ur array then add it like this 
    code.add(node.getData());    //assuming your BinaryTreeNode has a method getData() 

}

注:我coulnd't找出String prefix應該是。所以我只是把它留下了。