2014-10-27 127 views
0

我必須創建一個表達式樹。這是它的一個示例模型。但它顯示了我奇怪的字符,但不是我的字符串。 你能幫我解決這個問題嗎?還有一個問題:你能告訴我簡化我的代碼的方法嗎?這部分代碼呢?我可以沒有它嗎?Java中的二叉樹。 System.out.println問題()

public Iterator<TreeNode<T>> iterator() { 
    return null; 
} 

enter image description here

import java.util.*; 

public class TreeNode<T> implements Iterable<TreeNode<T>> { 
    T data; 
    TreeNode<T> parent; 
    List<TreeNode<T>> children; 

    public TreeNode(T data) { 
     this.data = data; 
     this.children = new LinkedList<TreeNode<T>>(); 
    } 

    public TreeNode<T> addChild(T child) { 
     TreeNode<T> childNode = new TreeNode<T>(child); 
     childNode.parent = this; 
     this.children.add(childNode); 
     return childNode; 
    } 

    public Iterator<TreeNode<T>> iterator() { 
     return null; 
    } 

    public static void main(String[] args){ 
     TreeNode<String> root = new TreeNode<String>("root"); 

     System.out.println("       " + root + "       "); 
     System.out.println("      /    \\   "); 

     TreeNode<String> node1 = root.addChild("node1"); 
     TreeNode<String> node2 = root.addChild("node2"); 
     System.out.println("    " + node1 + "  " + node2); 

     System.out.println("           \\"); 
     TreeNode<String> node20 = node2.addChild(null); 
     System.out.println("          " + node20); 
     System.out.println("           /\\"); 

     TreeNode<String> node21 = node2.addChild("node21"); 
     TreeNode<String> node210 = node20.addChild("node210"); 
     System.out.println("        " + node21 + " " + node210);    
    } 
} 

回答

5

要看到在輸出更有意義的價值,你應該重寫的TreeNodetoString()方法,也許是這樣的:

@Override 
public String toString(){ 
    return String.valueOf(this.data); 
} 
2

你需要重寫toString方法在TreeNode。另外如果你不想實施iterator方法,那麼你不應該implement Iterable