【问题标题】:BinarySearchTree Boat Charter record keepingBinarySearchTree Boat Charter 记录保存
【发布时间】:2013-05-02 02:48:26
【问题描述】:

这是家庭作业

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    • 有一组节点,每个节点代表一天。
    • 让节点持有字母x,所以必须确保它们是空的。
    • 让根节点指向左右,直到每棵树中有六个节点。
    • 还制作另一个数组,同样,每个数组代表一天。
    • x 填充每个节点以表明它没有被占用。
    • 现在,当您要预订乘客时,通过转到它在二叉树数组中的索引来找到当天
    • 如果其中有x,则表示它是免费的,因此请存储乘客姓名
    • 如果里面还有一个,检查左右节点,直到全部六个都检查完
    • 如果六个都填满了则进入节点的Queue数组,进入当天的索引,如果是x,则替换为乘客姓名
    • 如果不是x 并且根指针不为NULL,则说root->next = new Node (passenger's name);
    • 如果根指针为 NULL,则您必须转到队列中的最后一个人,然后添加新人。
    • 如果删除了一天的乘客,去队列中的索引,将根节点添加到二叉树中
    • 然后删除根节点中的名称,将其与行中的下一个交换...直到没有其他行。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-06
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多