Java中的二叉树。 System.out.println()的问题

时间:2014-10-27 15:28:23

标签: java algorithm io binary-tree

我必须制作一个表达式树。这是它的单个示例模型。但它显示我奇怪的字符,但不是我的字符串。 你能帮我解决这个问题吗?还有一个问题:你能告诉我简化代码的方法吗?这段代码怎么样?我可以不用吗?

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);             
    }
}

2 个答案:

答案 0 :(得分:5)

要在输出中查看更有意义的值,您应该覆盖toString()的{​​{1}}方法,可能类似于:

TreeNode

答案 1 :(得分:2)

您需要覆盖toString上的TreeNode方法。此外,如果您不想实施iterator方法,则不应implement Iterable