包含链表的 Pascal 二叉搜索树

Pascal binary search tree that contains linked lists

我需要使用递归函数搜索它的内容,所以它 returns 一个布尔值响应,取决于是否找到了我读取的值。我不知道如何让它工作。这是我定义的树的类型:

  text=string[30];
  list=^nodeL;
  nodeL=record
    title:text;
    ISBN:text;
    next:list;
  end;
  tree=^nodeT;
  nodeT=record
    cod:text;
    l:list;
    LC:tree;
    RC:tree;
  end;

这看起来像是“请为我完成作业post”,我不会这样做。我会尽力帮助你自己完成作业。

我不知道你的具体任务是什么,所以我将不得不做一些猜测。

我认为你的作业是编写一个递归函数来搜索树,return 根据是否找到一个值(函数的输入)返回一个布尔值响应。

我不知道树是如何获取其内容的。你说,你定义了树类型,所以我猜这意味着你没有提供已经有内容的树。因此,至少出于测试目的,您将不得不编写代码以将内容添加到树中(以便您可以搜索它)。

我不知道你应该创建什么样的树。通常树有关于项目如何在树中排列的规则。一种常见的树类型是二叉树,其中对于每个节点,左节点中的项目(如果存在)“小于”右节点中的项目(如果存在)。在向树中添加项目(即内容)时,您可能需要它。

我认为您需要更改树节点 nodeT 的定义(我可能是错的)。树是一种链表,它通常不包含链表。通常每个树节点都包含一个数据项(不是项目列表)。

如果我正在做这项作业(并学习用 Pascal 编程),我将执行以下操作(按此顺序):

  1. 确保我理解链接列表(至少 singe-linked 列表)。至少编写一个程序将数据添加到链表中,并搜索 它(不要使用递归)。

  2. 确保我理解递归。阅读一些关于递归的教程(不使用链表或树)。例如“First Textbook Examples of Recursion”。至少编写一个使用递归的程序(不要使用链表或树)。

  3. 确保我了解树木。阅读一些关于树的教程。例如,“Binary Search Trees

  4. 做作业。

P.S。您可能希望将文本类型的名称从“文本”更改为“文本”,因为在 Pascal 中,“文本”是文本文件的预定义类型的名称。