数据结构与算法实验:二叉树深度、排序二叉树等题目

需积分: 0 2 下载量 45 浏览量 更新于2024-08-04 收藏 390KB PDF 举报
"本次实验课包含了五个编程任务,主要涉及数据结构与算法,具体包括二叉树的深度计算、排序二叉树的实现、多叉树转化为二叉树的遍历、最长递增子序列的求解以及任务安排问题的解决。所有任务都提供了模板代码,但不允许使用C++/STL库,只允许使用指定的几个头文件。实验课的提交和评分有明确的时间规定,逾期提交将不被评分。" 在这些任务中,我们可以深入探讨以下几个知识点: 1. **二叉树的深度**:`depth.cpp`要求计算扩展二叉树的深度。输入是一个表示前序遍历的字符串,其中空节点用'#'表示。你可以通过递归或广度优先搜索(BFS)的方法来计算树的深度。 2. **排序二叉树**:`bst.cpp`要求实现排序二叉树。输入是一个整数序列,程序应构建排序二叉树并输出中序遍历的结果,同时输出每个节点的层次和度数信息。注意,输出顺序需要根据输入顺序进行调整。 3. **多叉树转二叉树遍历**:`c2t.cpp`涉及将多叉树转化为二叉树并进行遍历。输入是树的父亲节点表示,你需要将其转换为二叉树形式,并按顺序输出遍历结果。 4. **最长递增子序列**:`longest.cpp`需要求解最长递增子序列。输入是一个整数序列,程序应找到其中的最长递增子序列并输出其长度。动态规划(DP)是解决此类问题的常见方法,可以使用“保存最优解”的思想来构建解决方案。 5. **任务安排问题**:`taskprocess.cpp`涉及的任务安排问题,可能需要贪心算法来解决。具体要求未详述,但通常这类问题会涉及优先级排序或资源分配,以达到某种优化目标。 在编程时,务必遵循给出的限制,例如禁止使用C++/STL库,只能使用指定的`stdlib`, `stdio`, `iostream`, `memory`, 和 `malloc`头文件。同时要注意提交时间,以获取最佳评分。课后提交的代码将根据提交时间受到不同程度的分数折扣,过期提交将不计分。实验课结束后,会提供全部测试用例以供学生课后改进代码。