数据结构实验报告(C++) 实验2;树型结构实验指导(含源码)

整理一下之前的作业,说不定会帮上别人

如果其中选做题没有源码或没有运行截图,那是因为作者也未完成,请见谅

题目1.满二叉树判断
题目2.(选做题)完全二叉树判断
题目3.相似二叉树判断
题目4.二叉树结点交换 
题目5.统计叶结点个数
题目6.构造二叉树

题目1. 满二叉树判断

实验要求:

  1. 实现一个模板函数IsFullTree判断一棵二叉树是否是满二叉树;
  2. 利用编程模板中提供的主函数,测试算法正确性。

实现提示:

本题提供的编程模板包含bin_tree_node.h、binary_tree.h、main.cpp、alg1.h四个文件,其中bin_tree_node.h包含了二叉树结点类模板,binary_tree.h包含二叉树类模板,main.cpp为测试所使用的主函数。算法实现代码应填写在alg1.h的IsFullTree函数中,不可以在其它任何位置添加、删除或更改代码。

算法测试时,二叉树通过先序遍历序列和中序遍历序列构造。先输入二叉树结点个数,然后分别输入先序序列和中序序列,构造出的二叉树作为参数传给IsFullTree。

输入样例1

5

1 2 4 5 3

4 2 5 1 3

输出样例1

不是满二叉树

输入样例2

7

1 2 4 5 3 6 7

4 2 5 1 6 3 7

输出样例2

是满二叉树

题目2. (选做题)完全二叉树判断

实验要求:

(1)实现一个模板函数IsCompleteTree判断一棵二叉树是否是完全二叉树;

(2)利用编程模板中提供的主函数,测试算法正确性。

实现提示:

本题提供的编程模板包含node.h、simple_lk_list.h、node.h、lk_queue.h、main.cpp、alg2.h六个文件,其中node.h包含单链表的结点类模板,simple_lk_list.h包含了单链表类模板,main.cpp为测试所使用的主函数.。node.h和lk_queue.h提供了本题可能会用到的链队列模板。算法实现代码应填写在alg2.h相应函数中,不可以在其它任何位置添加、删除或更改代码

算法测试时,二叉树通过先序遍历序列和中序遍历序列构造。先输入二叉树结点个数,然后分别输入先序序列和中序序列,构造出的二叉树作为参数传给IsCompleteTree。

输入样例1

5

1 2 4 3 5

2 4 1 5 3

输出样例1

不是完全二叉树

输入样例2

6

1 2 4 5 3 6

4 2 5 1 6 3

输出样例2

是完全二叉树

题目3.:相似二叉树判断

实验要求:

  1. 实现一个模板函数IsSimilarHelp判断以r1和r2为根的两棵二叉树是否相似;
  2. 利用编程模板中提供的主函数,测试插入和删除函数的正确性。

实现提示:

两棵二叉树相似是指二者都为空树或者二者均不为空树且它们的左右子树分别相似。

本题提供的编程模板包含bin_tree_node.h、binary_tree.h、main.cpp、alg3.h四个文件,其中bin_tree_node.h包含了二叉树结点类模板,binary_tree.h包含二叉树类模板,main.cpp为测试所使用的主函数。算法实现代码应填写在alg3.h的IsSimilarHelp函数中,不可以在其它任何位置添加、删除或更改代码。

算法测试时,二叉树通过先序遍历序列和中序遍历序列构造。分别输入两棵二叉树的结点个数、先序序列和中序序列,构造出两棵二叉树bt1和bt2,作为参数传给alg3.h中的IsSimilar函数, IsSimilar调用IsSimilarHelp函数判断bt1和bt2是否相似。

输入样例1

5

1 2 4 5 3

4 2 5 1 3

5

2 3 5 4 1

5 3 4 2 1

输出样例1

bt1和bt2相似

输入样例2

5

1 2 4 5 3

4 2 5 1 3

5

1 2 4 5 3

4 2 1 3 5

输出样例2

bt1和bt2不相似

题目4.:二叉树结点交换

实验要求:

  1. 实现一个模板函数SwapBiTreeHelp交换以r为根的二叉树的所有结点的左右孩子
  2. 利用编程模板中提供的主函数中测试算法正确性。

实现提示:

本题提供的编程模板包含bin_tree_node.h、binary_tree.h、main.cpp、alg4.h四个文件,其中bin_tree_node.h包含了二叉树结点类模板,binary_tree.h包含二叉树类模板,main.cpp为测试所使用的主函数。算法实现代码应填写在alg4.h的SwapBiTreeHelp函数中,不可以在其它任何位置添加、删除或更改代码。

算法测试时,二叉树通过先序遍历序列和中序遍历序列构造。先输入二叉树结点个数,然后分别输入先序序列和中序序列,构造出的二叉树作为参数传给alg4.h中的SwapBiTree函数, SwapBiTree调用SwapBiTreeHelp函数实现二叉树结点的交换。

输入样例:

5

1 2 4 3 5

2 4 1 5 3

输出样例:

原二叉树

 3

  5

1

  4

 2

交换左右孩子后的新二叉树

 2

  4

1

  5

 3
 

题目5. 统计叶结点个数

实验要求:

(1)实现一个模板函数LeafNodeCountHelp统计以r为根的二叉树的叶结点个数。

(2)利用编程模板中提供的主函数,测试算法正确性。

实现提示:

本题提供的编程模板包含bin_tree_node.h、binary_tree.h、main.cpp、alg5.h四个文件,其中bin_tree_node.h包含了二叉树结点类模板,binary_tree.h包含二叉树类模板,main.cpp为测试所使用的主函数。算法实现代码应填写在alg5.h的LeafNodeCountHelp函数中,不可以在其它任何位置添加、删除或更改代码。

算法测试时,二叉树通过先序遍历序列和中序遍历序列构造。先输入二叉树结点个数,然后分别输入先序序列和中序序列,构造出的二叉树作为参数传给alg5.h中的LeafNodeCount函数, LeafNodeCount调用LeafNodeCountHelp函数实现二叉树叶结点的个数的统计。

输入样例:

5

1 2 4 3 5

2 4 1 5 3

输出样例:

2

题目6. 构造二叉树

实验要求:

(1)实现一个模板函数CreateBinaryTreeHelp_PostIn,该函数通过二叉树的后序序列post[postLeft..postRight]和中序序列in[inLeft..inRight]构造以r为根的二叉树

(2)利用编程模板中提供的主函数,测试算法正确性。

实现提示:

本题提供的编程模板包含bin_tree_node.h、binary_tree.h、main.cpp、alg6.h四个文件,其中bin_tree_node.h包含了二叉树结点类模板,binary_tree.h包含二叉树类模板,main.cpp为测试所使用的主函数。算法实现代码应填写在alg6.h的CreateBinaryTreeHelp_PostIn函数中,不可以在其它任何位置添加、删除或更改代码。

算法测试时,先输入二叉树结点个数n,然后分别输入后序序列post和中序序列in,这三个变量作为参数传给alg6.h中的CreateBinaryTree_PostIn函数, CreateBinaryTree_PostIn调用CreateBinaryTreeHelp_PostIn函数实现二叉树的构造。

输入样例:

5

4 2 5 3 1

2 4 1 5 3

输出样例:

  7

 3

  6

1

  5

 2

  4

源码下载地址:(5条消息) 数据结构实验报告(C++)实验2;树型结构实验指导程序源码-C++文档类资源-CSDN文库
链接:https://pan.baidu.com/s/1k31-8Ve5F1O-anOnV-F7Gw?pwd=cgee 提取码:cgee

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
数据结构算法实验的目的是掌握树型结构的基本概念和算法,以及二叉树的存储结构和遍历方法。实验要求学生能够设计数据结构和有效算法,用高级语言编程实现并测试其正确性和有效性。\[1\] 在实验中,学生需要编写程序来建立二叉树的二叉链表存储结构,并展示和保存二叉树的形式。同时,需要实现二叉树的先序、中序、后序和层序遍历的递归和非递归算法,并展示和保存相应的遍历序列。此外,还需要完成给定二叉树的完全二叉树判断或求任意两个节点的公共祖先的应用任务。\[2\] 关于数据结构算法实验的更多内容和实验报告更新可以参考博客专栏:https://blog.csdn.net/weixin_43598687/category_11640051.html\[3\] #### 引用[.reference_title] - *1* *2* [《数据结构算法实验树型结构的建立与遍历](https://blog.csdn.net/gzn00417/article/details/104145492)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [本科课程【数据结构算法实验5 - 广度优先搜索、二叉排序树的构造](https://blog.csdn.net/weixin_43598687/article/details/123617469)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值