如何做二叉树?

时间:2015-12-23 00:42:34

标签: tree binary-tree

我该怎么做呢?

您的程序应该首先提示用户输入文件名。然后,打开那个 文件并根据需要使用它来执行以下操作:使用存储在每个节点的二叉搜索树 字符串和它找到的节点数量的计数。然后,浏览给出的文件 (文本文件),从第一个字母开始,将它放在树上,计数为1.然后得到下一个 文件中的字符,将其推送到树上,依此类推。如果您尝试添加具有的节点 已经添加(例如,将'a'推送到已经有'a'的树上,增量 该节点的计数。 完成后,再次浏览该文件并获取所有连续的2个字母的出现次数 并将它们推到树上。同样,如果匹配,则递增计数。 重复整个过程,直到达到'k'长序列。

1 个答案:

答案 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;
};

这是程序的'伪代码':

  1. 读取文件名(字符串名称)和(int k)
  2. 打开文件F =打开(名称)
  3. 打开流S(F),int i = 1,Init Tree T
  4. 而(I< = k)的
    1. 读取S从k = 0到k ==结束
      1. 读取字符char * chars
      2. T.add(字符)
      3. K + = I
    2. 我+ +