⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main6-1.cpp

📁 该程序实现了对二叉树的各种遍历
💻 CPP
字号:
 // main6-1.cpp 检验bo6-1.cpp的主程序,利用条件编译选择数据类型为char或int
//#define CHAR 1 // 字符型
#define CHAR 0 // 整型(二者选一)
#include<iostream> 
using namespace std;
#include"c1.h"
#include"func6-1.cpp" // 利用条件编译,在主程序中选择结点的类型,访问树结点的函数
#include"c6-1.h" // 二叉树的顺序存储结构
#include"bo6-1.cpp" // 二叉树顺序存储结构的基本操作 
void main()
 { 
   
   bool i;
   int j;
   position p;
  #if CHAR
   char e1,e2,e3,e4 ;
   SqBiTree<char> t,s;
  #else
   int e1,e2,e3,e4 ;
   SqBiTree<int> t,s;
  #endif
   t.CreateBiTree(); // 建立二叉树t
   cout<<"建立二叉树后,树空否?"<<t.BiTreeEmpty()<<"(1:是 0:否)。树的深度="<<t.BiTreeDepth()<<endl;
   i=t.Root(e1); // 将二叉树t的根的值赋给e1
   if(i) // 二叉树t非空
     cout<<"二叉树的根为"<<e1;
   else
     cout<<"树空,无根。\n";
   cout<<"层序遍历二叉树:\n";
   t.LevelOrderTraverse(visit); // 层序遍历二叉树t
   cout<<"中序遍历二叉树:\n";
   t.InOrderTraverse(visit); // 中序遍历二叉树t
   cout<<"后序遍历二叉树:\n";
   t.PostOrderTraverse(visit); // 后序遍历二叉树t
   cout<<"请输入待修改结点的层号 本层序号:";
   cin>>p.level>>p.order;
   e1=t.Value(p); // 将二叉树t中位置p的结点的值赋给e1
   cout<<"待修改结点的原值为:"<<e1<<","<<"请输入新值:";
   cin>>e2;
   t.Assign(p,e2); // 将e2的值赋给二叉树t中位置p的结点
   cout<<"先序遍历二叉树:\n";
   t.PreOrderTraverse(visit); // 先序遍历二叉树t
   cout<<"结点"<<e2<<"的双亲为"<<t.Parent(e2)<<"左右孩子分别为"<<t.LeftChild(e2)<<","<<t.RightChild(e2)<<",";
   cout<<"左右兄弟分别为"<<t.LeftSibling(e2)<<","<<t.RightSibling(e2)<<endl;
   cout<<"建立右子树为空的树s:\n";
   s.CreateBiTree(); // 建立二叉树s
   cout<<"树s插到树t中,输入树t中树s的双亲结点,s为左(0)或右(1)子树:";
   cin>>e3>>j;
   InsertChild(t,e3,j,s);// 将树s插到树t中,结点e3作为树s的双亲结点,根据j的值确定树s是e3的左或右子树
   cout<<"层序遍历二叉树:\n";
   t.LevelOrderTraverse(visit); // 层序遍历二叉树t
   t.Print(); // 逐层、按本层序号输出二叉树t
   cout<<"删除子树,请输入其根结点的双亲的层号 本层序号 其为双亲的左(0)或右(1)子树:";
   cin>>p.level>>p.order>>j;
   t.DeleteChild(p,j); // 删除二叉树t中位置p结点的左(j=0)或右(j=1)子树
   t.Print(); // 逐层、按本层序号输出二叉树t
   t.ClearBiTree(); // 清空二叉树T 
   cout<<"清空二叉树后,树空否?"<<t.BiTreeEmpty()<<"(1:是 0:否)。树的深度="<<t.BiTreeDepth()<<endl;
   i=t.Root(e4); // 将二叉树t的根的值赋给e4
   if(i) // 二叉树t非空
     cout<<"二叉树的根为"<<e4;
   else // 二叉树t为空
     cout<<"树空,无根。\n";
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -