多个Red Black Trees实例数据交叉混淆问题排查求助
红黑树实例数据交叉问题排查结果
核心错误原因
你的RedBlackBST类中的root属性被错误声明为static静态成员:
public static Node root = null;
static修饰的成员属于类本身,而非类的实例对象。也就是说你创建的所有RedBlackBST实例,都会共用同一个root节点存储树结构。你先后往co2DateKey、co2NumKey插入数据时,实际都是修改全局唯一的这棵红黑树,所以遍历第一个实例时,会输出所有插入过的数据。
修复方案
只需要把root属性的static修饰符删除即可,让每个实例拥有独立的根节点:
public Node root = null;
其他注意事项
修改完成后,你现有代码中get、getColor方法调用的root会自动指向当前实例的独立根节点,无需额外调整,所有红黑树实例的数据隔离问题就会完全解决。
内容的提问来源于stack exchange,提问作者potroast12
相关产品推荐
相关产品推荐

