Java 输入元素时的二叉树排序

Java 输入元素时的二叉树排序,java,sorting,binary-tree,Java,Sorting,Binary Tree,我是学java的新手。 我想制作对元素进行排序的二叉树 我用了这个密码 private void setNode (Node Value, Node head){ if (head == null || Value.Value == head.Value) return; if (Value.Value > head.Value) { if (head.Right == null) { he

我是学java的新手。 我想制作对元素进行排序的二叉树

我用了这个密码

private void setNode (Node Value, Node head){

    if (head == null || Value.Value == head.Value)
        return;

        if (Value.Value > head.Value) {
            if (head.Right == null) {
                head.Right = Value;
                return;
            } else
                setNode(Value, head.Right);
        }

    if (Value.Value < head.Value){
        if(head.Left == null){
            head.Left = Value;
            return;}
        else
            setNode(Value, head.Left);
    }

}
private void setNode(节点值、节点头){
if(head==null | | Value.Value==head.Value)
返回;
如果(Value.Value>head.Value){
if(head.Right==null){
头。右=值;
返回;
}否则
setNode(值,head.Right);
}
if(Value.Value
但是如果我像这样使用它

for (int i=0 ; i < array.length ; i++)
        link.addNode(new Node(i));

BinaryLinkList a = new BinaryLinkList(link);
    a.Search(700);
for(int i=0;i
它会在700次尝试后找到它 因为每次输入的数字都比前一次大 会是这样的

for (int i=0 ; i < array.length ; i++)
        link.addNode(new Node(i));

BinaryLinkList a = new BinaryLinkList(link);
    a.Search(700);
0

.1

..2

…3

……4

……5


对于
二叉树的一般概念来说,最坏的情况是按排序顺序插入元素。然后,您将完全体验您刚才告诉我们的内容,所有元素都将放在一边,您不会从树概念中获得任何优势(深度是元素的数量)

对于可能已经排序的输入排序,您应该使用除二叉树之外的其他数据结构,有许多具有不同优缺点的概念

还有一个优化,您可以在一段时间后平衡一棵树。正如@Kevin Anderson提到的,你可以看看。标准Java库附带的实现也是自平衡的()。也许你也在寻找一个
优先队列
()。关于如何实现这样的队列,也有多种概念(例如,
BucketQueue
),同样有其优点和缺点


您的用户案例是什么?如果您告诉我们要用它实现什么,我们可以帮助您找到合适的数据结构。

忘记Java,用简单的英语编写伪代码,并向我们展示您想要的。听起来你想学习平衡树。是一个很好的起点。@n如果用户回答了您的问题,请同时接受他的回答()。如果没有,请说明还有什么问题没有回答,这是StackOverflow的一个非常关键的部分,非常感谢。