#include<>
#include<iostream>
#include<queue>
#include<stack>
#include<>
#define SIZE 100
using namespace std;
typedef struct BiTNode{
char date;
struct BiTNode *lchild,*rchild;}
BiTNode,*BiTree;
void CreatBiTree(BiTree &T);
void PreOrder(BiTree);
void InOrder(BiTree);
void PostOrder(BiTree);
void InOrderTraverse(BiTree T);
void PreOrder_Nonrecursive(BiTree T);
int shendu(BiTree T);
int Count(BiTree T);
void main(){
BiTree T;
int j;
int flag=1;
printf("本程序实现二叉树的操作:\n");
printf("叶子节点以空格表示:\n");
printf("可以进行建立二叉树,递归先序、中序、后续遍历,非递归先序、中序遍历等操作\n");
printf("请建立二叉树\n");
printf("建立将以三个空格后回车结束\n");
CreatBiTree(T);
getchar();
do{
printf("请选择\n");
printf("1、递归先序遍历\n");
printf("2、递归中序遍历\n");
printf("3、递归后续遍历\n");
printf("4、非递归中序遍历\n");
printf("5、非递归先序遍历\n");
printf("6、求叶子个数\n");
printf("7、求树深\n");
printf("0、退出程序\n");
scanf("%d",&j);
switch(j){
case 1:if(T){
printf("递归先序遍历二叉树:");
PreOrder(T);
printf("\n");}
else printf("二叉树为空!\n");
break;
case 2:if(T){
printf("递归中序遍历二叉树:");
InOrder(T);
printf("\n");}
else printf("二叉树为空!\n");
break;
case 3:if(T){
printf("递归后序遍历二叉树:");
PostOrder(T);
printf("\n");}
else printf("二叉树为空!\n");
break;
case 4:if(T){
printf("非递归中序遍历二叉树:");
InOrderTraverse(T);
printf("\n");}
else printf("二叉树为空!\n");
break;
case 5:if(T){
printf("非递归先序遍历二叉树:")
树的各种遍历及树深叶子求法 来自淘豆网m.daumloan.com转载请标明出处.