Java 输入元素时的二叉树排序
我是学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
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的一个非常关键的部分,非常感谢。