/** * 删除节点 * |---1:没有找到删除节点则直接返回 * |---2:如果删除的是唯一的根节点,则将 root 置空,返回 * |---3:删除叶子节点 * |---3.1:对要删除的黑色叶子节点进行调整 * |---3.2:删除红黑两种叶子节点 * |---4:删除只有一个子节点的节点 * |---4.1:将红色子节点拷贝到父节点 ...
最后是删除功能的实现代码(插入功能的实现代码也写在了一起): 1/**2* 手撕红黑树3* By 469の瘸子 (意义不明的口胡:现在应该是420の的瘸子233)4* **/5publicclassRedBlackTree<EextendsComparable<E> & PrintToDOS>{67publicstaticfinalbooleanblack =true;8publicstaticfinalbooleanred =false;9publicNode roo...
至此,二叉树和红黑树研究完毕。代码如下: 1import'tree_node.dart';2import'tree_exception.dart';3import'traverse_order.dart';45classRBTree<EextendsComparable<E>>{6RBTNode<E>_root;7int_nodeNumbers;89RBTree() : _nodeNumbers = 0;1011factory RBTree.from(Iterable<Comparable<E>>elements) {12var ...