我该怎么做呢?
您的程序应该首先提示用户输入文件名。然后,打开那个 文件并根据需要使用它来执行以下操作:使用存储在每个节点的二叉搜索树 字符串和它找到的节点数量的计数。然后,浏览给出的文件 (文本文件),从第一个字母开始,将它放在树上,计数为1.然后得到下一个 文件中的字符,将其推送到树上,依此类推。如果您尝试添加具有的节点 已经添加(例如,将'a'推送到已经有'a'的树上,增量 该节点的计数。 完成后,再次浏览该文件并获取所有连续的2个字母的出现次数 并将它们推到树上。同样,如果匹配,则递增计数。 重复整个过程,直到达到'k'长序列。
答案 0 :(得分:0)
我不会做任何编码(因为你对语言等没有任何说明)。但我想我可以帮助你。我只是假设C ++,你知道那种语言的基础知识。
您的程序应该首先提示用户输入文件名。
这很简单(只是一些cin)。
然后,打开该文件
再次只是语言实现 - 只需使用fstream读取文件。
使用二进制搜索树,在每个节点上存储字符串和它找到的节点数量的计数
尝试将BST实现为写here,但在每个节点中存储一些int,它反复重复值和值为char *。
然后,浏览给定的文件
现在通过char扫描流char(然后是2chars,3chars,... kchars)并在它们上使用tree.add(char *)。
你的树应该是这样的:
class Tree{
Node * head;
void Add(char*);
};
您的节点:
class Node{
char* data;
Node* right;
Node* left;
int counter;
};
这是程序的'伪代码':