java - 打印 Java 二叉搜索树

标签 java binary-search-tree

如何在java中打印二叉搜索树?我已经编写了插入树的代码,但无法打印树,我确定元素是否正在添加。我将在下面发布我的代码。

public class TreeNode {

    TreeNode left;
    TreeNode right;
    TreeNode root;

    int data;

    public TreeNode(int d) {

        data = d;
        left = right = null;
        root = null;

    }

    public synchronized void insert(int d) {
        if (root == null){
            root = new TreeNode( d );
        }
        if (d < data) {
            if (left == null) {
                left = new TreeNode(d);
            } else {
                left.insert(d);
            }
        } else if (d > data) {
            if (right == null) {
                right = new TreeNode(d);
            } else {
                right.insert(d);
            }
        }
    }

    public TreeNode treeSearch(TreeNode root, int target) {
        if (root != null) {
            if (target < root.data) {
                root = treeSearch(root.left, target);
            } else if (target > root.data) {
                root = treeSearch(root.right, target);
            }
        }
        return root;
    }
}

最佳答案

您可以使用以下方法:

 void printTree(TreeNode node, String prefix)
 {
    if(node == null) return;

    System.out.println(prefix + " + " + node.data);
    printTree(node.left , prefix + " ");
    printTree(node.right , prefix + " ");
 }

初始调用应该是 printTree( root,""); 从您要打印树的位置开始。这里root是根节点的引用。

更新:
您可以看到此代码正在运行 here

关于java - 打印 Java 二叉搜索树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47510048/

相关文章:

algorithm - BST 和 Splay 树中 1...n 键的插入操作的复杂度是多少?

c++ - 我怎样才能创建树?

Java ArrayList可以在机器上编译,但不能在学校系统上编译

java - 将监听器添加到包含 CheckedTextView 和按钮的自定义 ListView

python - 中位数之和(更快的解决方案)

javascript - 在某个时间范围内有效的对象的搜索列表

java - 如何删除 Date 对象的亚秒部分

java - 如何在回收站 View android中选择多个项目?

java - 如何跨 Activity 维护 CheckBox 状态

python - 如何删除二叉搜索树的所有节点