我很擅长实现部分,我只是想知道如何根据比较器或类似的方法将值插入到树形图中。 请不要只提供可比较和比较的实现。
基本上我想知道在Red Black Tree(TreeMap的底层数据结构)中插入值时Comparable和Comparator的不同之处。 如何插入。? 如果它是可比较的,将与哪个对象插入对象进行比较? 如果是比较器,将比较哪两个对象以获得树中的适当位置。 如果有一个例子,它会很棒
答案 0 :(得分:1)
TreeMap
和TreeSet
基本上是二叉树。由于这个原因,可以使用二进制搜索轻松找到可以找到/将要插入节点的位置:
//just a stub of how the search for a specific node might work (this is not the real implementation
Node currentNode = ...
if(comparator.compare(currentNode.content , toSearch) < 0)
currentNode = currentNode.leftNode();
else
...