完全二叉数操作演示
1.完全二叉树操作演示要求:
 (1)创建完全二叉树(用顺序方式存储)
 (2)求二叉树的深度和叶子结点数
 (3)实现二叉树的前序、中序、后序和层次遍历。
 (4)查找给定结点的双亲、左右孩子。
 其他增加功能:
 (1)有用户使用错误的提示功能
 (2)具有退出功能
2二叉树总体结构设计
 对完全二叉数操作演示,主要划分为以下七个模块:
 完全二叉树显示:以括号套括号的形式显示完全二叉树。
 完全二叉树的节点数和叶子数:根据书中公式计算叶子数,并显示完全二叉树的节点数和叶子数。
 完全二叉树的树深:根据书中公式计算树深,并显示完全二叉树的树深。
 完全二叉树的前,中,后序遍历:根据程序分别显示二叉树的前,中,后序遍历。
 完全二叉树的层次遍历:根据程序分别显示完全二叉树的层次遍历。
 查找给定结点的双亲、左右孩子:根据书中公式计算查找给定结点的双亲、左右孩子,并加以显示。
 退出程序:谢谢你的使用!
 根据需求分析的结果,总体结构如图所示
 
 3.详细设计
 3.1数据结构设计
 (1)整个程序采用结构体与顺序表相结合的编程方法一共完成了7个功能。在你输入错误时有报错消息。这样使整个程序运行起来更加完整。程序中有若干个子函数被主函数调运执行。由于程序要求二叉树的存储方式为顺序存储,所以在本程序中采用了先进先出的顺序表存储方式。
 (2)程序包括的类
 Void out(tree&t,int r)是显示二叉树函数
 Node()求节点数,
 Leaf()求叶子节点数,
 Depth() 求树深
 Preorder() 先序遍历函数,
 Inorder() 中序遍历函数,
 Postorder() 后序遍历函数,
 leorder() 层次遍历函数;
 caidan() 菜单操作页面函数;
 sqhz() 查找给定节点的双亲,孩子函数
 3.2主要模块设计
 主函数 main()
 直接以字符数组的方式给二叉树赋值,调用caidan()函数,然后以switch分支语句分别对菜单中的各个函数操作,最后以do-while循环语句结束程序。
 树深的函数 Depth()
 直接根据节点数算出结果返回值。
 查找给定节点的双亲,孩子函数 sqhz()
 此函数是程序中比较复杂的函数,函数中是通过节点标志的奇偶性分类求解的,首先用要查找的节点与二叉树中的节点依次比较,如果找到节点则用除2求余的方法判断奇偶,然后根据各自的特点求出节点的双亲和孩子,若找不到此节点则break;结束此操作,重新选择操作。
 3.2.1菜单的选择模块
 
 3.2.2查找给定节点的双亲,孩子模块
4运行结果
-  进入菜单界面,显示本程序相关信息。 
  
-  输入1,回车,显示完全二叉树。 
  
-  输入2,回车,显示完全二叉树的节点数和叶子数。 
  
-  输入3,回车,显示完全二叉树的树深。 
  
-  输入4,回车,显示完全二叉树的前,中,后序遍历。如图4-5所示。 
  
-  输入5,回车,显示完全二叉树的层次遍历。 
-  输入6,回车,显示查找给定结点的双亲、左右孩子值。 
-  输入7,回车,显示“谢谢你的使用!”。 
-  输入8,回车,显示“输入错误,请重新选择:”。 
-  输入6,回车,p,回车,显示“二叉树中没有此节点,请重新输入:” 。 
 功能较多,在此不一一展示,如需源码和课程设计报告,欢迎关注与私信!!



















