Java 插入二进制搜索树的运行时间为n^2?

Java 插入二进制搜索树的运行时间为n^2?,java,algorithm,runtime,binary-search-tree,Java,Algorithm,Runtime,Binary Search Tree,这本书说插入二叉搜索树的最坏运行时间是n^2 我真的不明白 我是说如果你有1,2,3,4,5,6,7,8,9 哪一个是最坏的情况,最坏的情况不是运行时间是O(n) (如果值node.data,则向右) 有人能解释一下吗?我真的很感激 我想我现在知道答案了!因为你需要回去看看新的号码 从一开始就变大或变小 但我现在有另一个问题,构建AVL树的最坏运行时间是什么 这本书说构建和排序二叉搜索树是n(logn) AVL树的最差深度为logn 它从来没有说整个AVL树的插入时间是多少 有人知道吗?它不是

这本书说插入二叉搜索树的最坏运行时间是n^2

我真的不明白

我是说如果你有1,2,3,4,5,6,7,8,9

哪一个是最坏的情况,最坏的情况不是运行时间是O(n)

(如果值node.data,则向右)

有人能解释一下吗?我真的很感激


我想我现在知道答案了!因为你需要回去看看新的号码 从一开始就变大或变小

但我现在有另一个问题,构建AVL树的最坏运行时间是什么

这本书说构建和排序二叉搜索树是n(logn)

AVL树的最差深度为logn

它从来没有说整个AVL树的插入时间是多少

有人知道吗?

它不是
O(n)
,因为每次插入时,您都需要遍历整个树以找到合适的位置来放置新节点

例如,首先在节点的头部放置1。然后,要放置2,您需要查看头部的1,并决定将2添加到头部的右侧。然后,当添加3时,您需要再次查看1,决定向右,然后查看2,并将3放在2的右侧节点上

因此,基本上,每个最坏情况下的插入都是
O(k)
(其中k是树中已经存在的数字元素)。要构建树,您需要进行n次插入,因此整个操作需要
1+2+3+4+5+6…+n
操作,即
O(n^2/2)
-->
O(n^2)
这不是
O(n)
,因为每次插入时,您都需要遍历整个树以找到放置新节点的合适位置

例如,首先在节点的头部放置1。然后,要放置2,您需要查看头部的1,并决定将2添加到头部的右侧。然后,当添加3时,您需要再次查看1,决定向右,然后查看2,并将3放在2的右侧节点上

因此,基本上,每个最坏情况下的插入都是
O(k)
(其中k是树中已经存在的数字元素)。要构建树,您需要进行n次插入,因此整个操作需要
1+2+3+4+5+6…+n
操作,即
O(n^2/2)
-->
O(n^2)
这不是
O(n)
,因为每次插入时,您都需要遍历整个树以找到放置新节点的合适位置

例如,首先在节点的头部放置1。然后,要放置2,您需要查看头部的1,并决定将2添加到头部的右侧。然后,当添加3时,您需要再次查看1,决定向右,然后查看2,并将3放在2的右侧节点上

因此,基本上,每个最坏情况下的插入都是
O(k)
(其中k是树中已经存在的数字元素)。要构建树,您需要进行n次插入,因此整个操作需要
1+2+3+4+5+6…+n
操作,即
O(n^2/2)
-->
O(n^2)
这不是
O(n)
,因为每次插入时,您都需要遍历整个树以找到放置新节点的合适位置

例如,首先在节点的头部放置1。然后,要放置2,您需要查看头部的1,并决定将2添加到头部的右侧。然后,当添加3时,您需要再次查看1,决定向右,然后查看2,并将3放在2的右侧节点上


因此,基本上,每个最坏情况下的插入都是
O(k)
(其中k是树中已经存在的数字元素)。要构建树,您需要进行n次插入,因此整个操作需要
1+2+3+4+5+6…+n
操作,即
O(n^2/2)
-->
O(n^2)
首先,AVL树的深度:
设N(h)表示高度为h的AVL树中的节点数。
N(h)>=1+N(h-1)+N(h-2),这来自AVL树的定义。
N(h)>=F(h)-1,其中F(h)是斐波那契数。
N(h)>={(1+sqrt(5)/2}^h,

因此h首先,AVL树的深度:
设N(h)表示高度为h的AVL树中的节点数。
N(h)>=1+N(h-1)+N(h-2),这来自AVL树的定义。
N(h)>=F(h)-1,其中F(h)是斐波那契数。
N(h)>={(1+sqrt(5)/2}^h,

因此h首先,AVL树的深度:
设N(h)表示高度为h的AVL树中的节点数。
N(h)>=1+N(h-1)+N(h-2),这来自AVL树的定义。
N(h)>=F(h)-1,其中F(h)是斐波那契数。
N(h)>={(1+sqrt(5)/2}^h,

因此h首先,AVL树的深度:
设N(h)表示高度为h的AVL树中的节点数。
N(h)>=1+N(h-1)+N(h-2),这来自AVL树的定义。
N(h)>=F(h)-1,其中F(h)是斐波那契数。
N(h)>={(1+sqrt(5)/2}^h,

因此h你从哪里得到这个数字的?当你总是正确的时候,这种类型的树是最糟糕的O(n),因为你的树实际上是一个列表。更重要的是需要重新平衡树。插入一个单一的值是O(n)。生成整棵树是1+2+3…+n个操作,即O(n^2)我知道在最坏的二叉树中找到一个值是O(n)因为它是一个列表,所以你必须遍历所有的数字。但是二叉树的构建时间是n^2,你可以检查George的答案,他解释得很清楚。谢谢你的评论,有人知道第二个问题吗?你从哪里得到的数字?这种树是worstcase O(n)当你总是正确的时候,因为你的树实际上是一个列表。更多的是需要重新平衡树。插入一个值是O(n)。生成整个树是1+2+3…+n操作,也就是O(n^2)。我知道在wo中找到一个值