一、老师在课程里好像也没有写删除部分的代码,算法书上写的删除操作有点看不懂,作者也没有写,然而删除操作是比添加更复杂的,是否是因为对于红黑树来说这部分操作意义不大呢?
二、还有就是红黑树结构和AVL是差不多的,左右子树高度都不会大于1,也就是说同样的数据,最大深度应该是一致的。
对于所有节点的查询操作,复杂度应该都是logN级别的。老师说的2logN是否只是针对黑节点来说的呢?因为我的测试中,单纯的查询操作AVL和红黑树相比,两者基本是差不多的;如果只针对黑节点,不对红节点进行操作,那么它的具体应用又是什么呢?
三、老师说的红黑树添加操作比AVL快(实际测试结果确实如此)
BST: 8.5948097 s.
AVLTree: 0.0319461 s.
RBTree: 0.0256456 s.
,快的地方应该是在递归的时候左旋和右旋的操作减少了吧?
四、按理说左偏和右偏只是相对的,add速度应该都是差不多,但是右偏的红黑树add操作好像更快一点,试了一组数据(满二叉)int[] arr = {4, 5, 3, 2, 1, 6, 8};
,右偏树的flipColor的情况更多,也就是不用旋转只需要改变颜色就可以了。这是否说明右偏树就更快一点呢?这是为什么?