二叉查找树以及相关的几个树

来源:互联网 发布:淘宝5金冠店铺是那个 编辑:程序博客网 时间:2024/05/16 14:06

写在前面

博客写着写着会突然感到一些沮丧,觉得自己写的不好,不能把AVL树或者红黑树这样的单个东西写的很透彻。虽然如此,自己还是打算写下去,一方面是写的虽然不成体系,但毕竟是总结了一些稍微有那么些用处的东西;另一方面,也是对自己的一个督促,希望自己伴随着博客内容的越来越多,也在真真实实的进步。

关于查找树

二叉查找树中节点(X)如果有孩子节点的话,那么:它的左孩子节点的关键字值小于X的关键字值;它的右孩子节点的关键字值大于X的关键字值。

由于二叉查找树仅有如上的限制条件,当我们把有序度高的一组值插入到树中时,有序度越高,那么构建的树的高度也就越高。由于,在二叉查找树中检索某个关键字值的时间是O(h),也就造成了检索时间越大。

为了避免这种情况的发生,故而就出现了AVL树、红黑树、SBT树等。

二叉查找树、AVL树、红黑树实现上的区别

当实现这三种树的时候,都要实现search、max、min、predecessor、successor、insert、delete 7种动态集合操作。

AVL树、红黑树于二叉查找树实现上的不同点就在insert、delete中的节点调整部分。对于AVL树来说,多的是旋转和调整节点高度值,对于红黑树来说,多的是旋转和调整节点的颜色值。AVL树兄弟节点的高度差不能大于2,红黑树要求是黑高度不能超出2倍,所以AVL树是具有更加严格的平衡效果,实现起来考虑的情况也要相对复杂。

熟悉了二叉查找树的7种操作后,最关键的就是要清楚树中节点的左旋转和右旋转。弄清楚旋转之后,就剩下按照不同的情况执行旋转、高度计算、重新着色操作了。

二叉查找树和红黑树写的最好的就是《算法导论》了,网上的写的再花哨也不足够好。

0 0
原创粉丝点击