BinarySearchTree Boat Charter记录保存

时间:2013-05-02 02:48:27

标签: java linked-list queue binary-search-tree

这是一项家庭作业

对于我必须做的这项任务,我必须为邮轮创建一个月的记录保存日志(由数字1-31表示)。每天有1次巡航,最多可容纳6人。如果在某一天尝试预订的人数超过6,那么他们将被添加到队列中。目前的乘客名单应该保存在BinarySearchTree中。基本上我们要从提供的文件中读取有关人​​物对象的信息,并将它们插入到与他们选择的那天相对应的树中。 (该文件将按以下顺序提供信息:(transactionCode day lastName firstName))其中事务代码表示采取的操作(添加乘客,删除(从树中删除乘客并从队列中添加下一位乘客),打印(打印当前BST和等待列表当天),出发(打印最终名单和一天的队列)。

我要问的问题是关于创建BST和队列的方法,该方法在单个方法中代表每一天并添加到这些BST。我在实现这一目标的方法上一片空白。我已经创建了一个person对象类,一个BST类和一个队列类。我可以在我的乘客类中创建一个Add方法,但是我如何检查特定日期树是否已经存在,并添加到该树而不是创建一个新树?

我很茫然,如果你需要看任何课程,请发表评论。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果我明白你在说什么,这就是我认为你应该做的。

  • 拥有一组节点,每个节点代表一天。
  • 让节点保持字母x,因此必须说明它们是空的。
  • 让根节点左右指向,直到每棵树中有六个节点。
  • 再次制作另一个数组,每个数组代表一天。
  • 使用x填充每个节点,以表明它未被占用。
  • 现在,当你想预订一名乘客时,可以通过二叉树数组中的索引来查看这一天
  • 如果其中有x,那意味着它是免费的,所以存储乘客的姓名
  • 如果其中有另一个,请检查左右节点,直到检查完所有六个
  • 如果所有六个都已填满,则转到节点的队列数组,转到当天的索引,如果是x,则将其替换为乘客的姓名
  • 如果它不是x并且根指针不是NULL,请说root->next = new Node (passenger's name);
  • 如果根指针为NULL,则必须转到队列中的最后一个人,然后添加新人。
  • 如果乘客被删除了一天,请转到队列中的索引,将根节点添加到二叉树
  • 然后删除根节点中的名称,将其与下一行中的名称进行交换......直到不再符合要求。

我希望这会有所帮助。 :)