二叉搜索树<高度
本文关键字:高度 搜索树 | 更新日期: 2023-09-27 17:54:35
我即将实现一个很好的二叉搜索树。有人知道如何计算二进制搜索树TKey, TValue高度吗?谢谢!现在我用这个来求任意BST树的高度。但在这种情况下,它似乎不起作用。
public int Height()
{
return height(root);
}
protected int height(Node tree)
{
if (tree == null)
return -1;
int lefth = height(tree.left);
int righth = height(tree.right);
if (lefth > righth)
return lefth + 1;
else
return righth + 1;
}
你知道你已经有一个了吗?
System.Collections.Generic.SortedSet<T>
为红黑树(高度平衡)。
如果这还不够,你也有C5集合库,它给你其他的红黑树实现:
-
TreeSet<T>
表示使用平衡红黑树的一组项目;参见13.10节。按索引或按项值访问项需要时间O(log n)和项插入时间项删除时间O(log n)平摊。树集不允许因此属性
AllowsDuplicates
为false。 -
TreeBag<T>
表示使用平衡红黑树的物品的包或多集。按索引或按项值访问项需要时间O(log n)和项插入时间和项删除时间O(log n)平摊。
tree bag允许复制,所以属性
AllowsDuplicates
为true,并且每个项等价类只存储一个代表,因此DuplicatesByCounting
为真 -
TreeDictionary<K,V>
表示一个由(键、值)对或项组成的字典平衡红黑二叉树。条目访问、条目删除和条目插入取时间O(log n)。树的键、值或项的枚举字典遵循键比较器确定的键顺序。
private static int getHeight(BTreeNode n){
if(n == null)
return 0;
int lHeight = getHeight(n.left);
int rheight = getHeight(n.right);
int height = 1+Math.max(lHeight,rheight);
return height;
}