为什么字数统计不对呢

来源:7-1 集合基础和基于二分搜索树的集合实现

慕UI2011250

2020-03-04

public static void main(String[] args) {
System.out.println(“Pride and Prejudice”);
ArrayList words1 = new ArrayList<>();
FileOperation.readFile(“pride-and-prejudice.txt”, words1);
System.out.println(“Total words:” + words1.size());

    BSTSet<String> set1 = new BSTSet<>();
    for(String word:words1){
        set1.add(word);
    }
    System.out.println("Total different words:" + set1.getSize());
}

结果:
Pride and Prejudice
Total words:125901
Total different words:125901

写回答

2回答

weixin_慕哥8353170

2020-05-15

你的问题不知道有没有解决,我也遇到相同的问题,原因是:

老师在第6章第3节中的添加元素操作是这样的:

if(e.compareTo(node.e) < 0)
add(node.left, e);
else //e.compareTo(node.e) > 0
add(node.right, e);

我的理解是  在元素相等的时候也做了添加元素操作,更改为下面代码,就不会在相等时进行添加元素操作:

if (e.compareTo(node.e) < 0) {
    node.left = add(node.left, e);
} else if (e.compareTo(node.e) > 0) {//e.compareTo(node.e) >0
    node.right = add(node.right, e);
}

不知道我的理解正不正确。

0
2
weixin_慕哥8353170
回复
liuyubobobo
您在第六章第4节有更新写法,如果为e和node.e相等,什么都不做,我的意思是题主有可能没有注意到这个条件而造成了这个问题
2020-05-16
共2条回复

liuyubobobo

2020-03-04

我测试了一下,课程的官方代码没有问题。请你尝试下载课程的官方代码,在你的环境下运行,看是否有同样的问题?如果没有,请仔细调试比对,看自己的代码哪里有问题。


尤其是看一下 add 函数中 size 的维护是否正确,因为你的结果显示,插入的单词即使已经在 BST 中,你的 size 也做了 ++。


本小节课程官方代码传送门:https://git.imooc.com/coding-207/coding-207/src/master/07-Set-and-Map/01-Set-Basics-and-BSTSet 


加油!:)

0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程