整理一下之前的作业,说不定会帮上别人
如果其中选做题没有源码或没有运行截图,那是因为作者也未完成,请见谅
题目1.满二叉树判断
题目2.(选做题)完全二叉树判断
题目3.相似二叉树判断
题目4.二叉树结点交换
题目5.统计叶结点个数
题目6.构造二叉树
题目1. 满二叉树判断
实验要求:
- 实现一个模板函数IsFullTree判断一棵二叉树是否是满二叉树;
- 利用编程模板中提供的主函数,测试算法正确性。
实现提示:
本题提供的编程模板包含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.:相似二叉树判断
实验要求:
- 实现一个模板函数IsSimilarHelp判断以r1和r2为根的两棵二叉树是否相似;
- 利用编程模板中提供的主函数,测试插入和删除函数的正确性。
实现提示:
两棵二叉树相似是指二者都为空树或者二者均不为空树且它们的左右子树分别相似。
本题提供的编程模板包含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.:二叉树结点交换
实验要求:
- 实现一个模板函数SwapBiTreeHelp交换以r为根的二叉树的所有结点的左右孩子
- 利用编程模板中提供的主函数中测试算法正确性。
实现提示:
本题提供的编程模板包含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