我必须选择哪些操作在AVL树上具有比BST更好的最坏情况时间复杂度。我已经确定每个操作的时间复杂度取决于树...
AVL树的最坏情况时间复杂度是......
Insert - O(log(n))
Remove - O(log(n))
Search - O(log(n))
BST的最坏情况时间复杂度是....
Insert - O(height)
Remove - O(height)
Search - O(height)
O(log(n))的时间复杂度是否比O(高度)更好?
答案 0 :(得分:0)
BST上插入,删除和搜索的最坏情况时间复杂度为<head>
<!-- Plotly.js -->
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
</head>
<body>
<!-- Plotly chart will be drawn inside this DIV -->
<div id="myDiv"></div>
<script>
var y = ['US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US',
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US',
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US',
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US',
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US',
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US',
'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US', 'US'
]
var trace1 = {
x: [1.7377, 1.8417, 1.9909, 1.9395, 1.8651, 1.8919, 1.7707,
1.5565, 1.8166, 1.3449, 1.3156, 1.3081, 1.6179, 1.574,
1.7276, 1.9215, 1.904, 2.0057, 2.0598, 2.2585, 2.209,
2.1056, 2.1448, 1.8363, 2.067, 2.2431, 2.0881, 2.1856,
2.4389, 2.2612, 2.2647, 2.3306, 2.369, 2.7129, 2.6152,
2.6228, 2.7727, 2.766, 2.8742, 2.9543, 2.9113, 2.9618,
2.8921, 2.7691, 2.7775, 2.7536, 2.6884, 2.9045, 3.0042,
2.9149, 2.8295, 2.6813, 2.6212, 2.5895, 2.6575, 2.8279,
2.8184, 2.9544, 2.9467, 2.8441, 2.8355, 2.6224, 2.5876,
2.5422, 2.5885, 2.6453, 2.431, 2.488
],
y: y,
name: 'US',
marker: {
color: 'black'
},
type: 'box',
boxmean: false,
orientation: 'h'
};
var data = [trace1];
var layout = {
title: 'US ideal points spread',
xaxis: {
title: 'US',
zeroline: false
},
boxmode: 'group'
};
Plotly.newPlot('myDiv', data, layout);
</script>
</head>
,其中O(n)
是BST中的节点数。你可以通过按顺序将节点插入BST来触发这种最坏的情况,这样BST本质上就是一个链表(例如,先插入1,然后插入2,然后插入3,依此类推......你最终会得到一个BST看起来像1 - &gt; 2 - &gt; 3 ...)。
n
的时间复杂度高于O(log(n))
。
答案 1 :(得分:0)
Attribute :class is not allowed here
是O(log(n))
的最佳案例。二叉树的高度可以是O(height)
和log(n)
之间的任意整数,其中n
表示节点数。
例如,如果您有一个BST,其中每个节点只有正确的子节点,则它与链接列表相同,因此对于所有三个操作都具有n
最差情况复杂性。
另一方面,AVL是自平衡二分搜索树,意味着来自任何节点的每两个子树具有相同的深度(高度)+ - 常数。这意味着您在每个步骤中大约将值减半,从而导致O(n)
复杂度,这也是O(log(n))
复杂度。
答案 2 :(得分:0)
AVL树基本上是高度平衡的BST。 如果考虑完整的AVL树,则记录n(AVL树)&gt; log n(BST)。 - &GT;其中n是节点数。
而当你考虑O(身高)时,它在AVL和BST中都是相同的
3
\
5
(BST)
height = 2,n = 2
3
/ \
2 5
(AVL)
身高= 2,n = 3