二叉搜索树递归插入

时间:2014-02-27 17:46:51

标签: java recursion insert tree

我们获得了Node类,我们必须实现递归插入。插入后我输出错误,我不知道为什么

给出了printTree函数:

public void printTree() {
    printTree(root,0);
     }

public  void printTree(TreeNode<T> p, int depth) {
    if (p != null) {
        if (!(p.left == null && p.right == null))
            printTree(p.right,depth+1);
        for (int i = 1; i <= depth; i++)
             System.out.print("   ");
        if (p.left == null && p.right == null)
             System.out.println(p.info + " ");
        else System.out.println(p.info);
        printTree(p.left,depth+1);
    }
}

这是我的插入功能:

public void insert(T info)
{
    root = insert(root, info);
}

protected TreeNode<T> insert(TreeNode<T> node, T info)
{
             if (node == null)
             {
                node = new TreeNode<T>(info);
             }

              else if (info.compareTo(node.info) < 0)
              {
                node.left  = insert(node.left,info);
              }

           else 
           {
            node.right = insert(node.right,info);
           }
           return node;
      }

这是我的主要内容:

public static void main(String[] args) {
    // TODO code application logic here
    Tree<Integer> t = new Tree<Integer>();

    t.insert(4);
    t.insert(3);
    t.insert(5);
    t.insert(1);
    t.printTree();
}

我得到的输出是:

  5 
4
  3
    1 

而不是:

  4
 3 5
1

1 个答案:

答案 0 :(得分:0)

输出对我来说似乎没问题。

printTree方法无法正常工作。它从上到下打印树,但在屏幕上输出“旋转”90度 因此,最高级别应位于第一列,最后一级非空列的底部级别。