2014-10-27 43 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