第一次学二叉树啊,基本的功能为:建立,求叶子,求树高,前序(递归&&非递归),中序(递归&&非递归),后序(递归&&非递归),输出.....
虽然有很多成分是书上的,不过辛苦了很久,安慰一下自己吧 .... 求高手给一些意见,改进一下!
//main.cpp:
#include <iostream>
#include "head.h"
using namespace std;
int main()
{
cout<<"-------------------欢迎来到二叉树基本操作实现系统--------------------------"<<endl;
cout<<"请按照提示进行操作,祝你操作愉快,谢谢~~ ^_^ ^_^ ^_^"<<endl<<endl;
int cas,pp=0; //pp为判断循环标志,cas为选择操作的序号
BinaryTree<char> btree;
BinTreeNode<char> *p=btree.getRoot();
while(pp==0)
{
cout<<"1------建立一棵二叉树"<<endl;
cout<<"2------前序遍历递归算法"<<endl;
cout<<"3------前序遍历非递归算法"<<endl;
cout<<"4------中序遍历递归算法"<<endl;
cout<<"5------中序遍历非递归算法"<<endl;
cout<<"6------后序遍历递归算法"<<endl;
cout<<"7------后序遍历非递归算法"<<endl;
cout<<"8------求树高"<<endl;
cout<<"9------求叶子总数"<<endl;
cout<<"10-----输出二叉树"<<endl;
cout<<"11-----退出"<<endl<<endl;
cout<<"请输入你要实现功能的对应数字:";
cin>>cas;
switch(cas)
{
case 1:cout<<"请按照广义表的形式输入二叉树,并且以‘#’结束!!"<<endl;
btree.Create(p);
if(p!=NULL) {cout<<"输入完成"<<endl<<endl;}
break;
case 2:if(p==NULL)
{
cout<<"!!二叉树还没建立,请先建立二叉树。"<<endl;
}
else
{
cout<<"用前序遍历的递归算法输出的二叉树为:";
btree.preOrder(p);
cout<<endl;
}
break;
case 3:if(p==NULL)
{
cout<<"!!二叉树还没建立,请先建立二叉树。"<<endl;
}
else
{
cout<<"用前序遍历非递归算法输出的二叉树为:";
btree.no_preOrder(p);
cout<<endl;
}
break;
case 4:if(p==NULL)
{
cout<<"!!二叉树还没建立,请先建立二叉树。"<<endl;
}
else
{
cout<<"用中序遍历的递归算法输出的二叉树为:";
btree.inOrder(p);
cout<<endl;
}
break;
case 5:if(p==NULL)
{
cout<<"!!二叉树还没建立,请先建立二叉树。"<<endl;
}
else
{
cout<<"用中序遍历的非递归算法输出的二叉树为:";
btree.no_inOrder(p);
cout<<endl;
}
break;
case 6:if(p=