第一:二叉树的前序,中序,后序遍历,输出叶子节点,输出二叉树的高度(用递归的方法实现)
#include <iostream>
using namespace std;
typedef struct Node* BinTree;
struct Node//定义一个二叉树结点
{
char data;
BinTree lchild,rchild;
};
BinTree creat()//创建二叉树
{
BinTree t;
char a;
cin>>a;
if(a=='*')
{
t=NULL;
}
else
{
t=(struct Node*)malloc(sizeof(Node));
t->data=a;
t->lchild=creat();
t->rchild=creat();
}
return t;
}
void PreTravsal(BinTree tree)//二叉树的前序遍历
{
if(tree!=NULL)
{
cout<<tree->data;
PreTravsal(tree->lchild);
PreTravsal(tree->rchild);
}
}
void InTravsal(BinTree tree)//二叉树的中序遍历
{
if(tree!=NULL)
{
InTravsal(tree->lchild);
cout<<tree->data;
InTravsal(tree->rchild);
}
}
void PostTravsal(BinTree tree)//二叉树的后序遍历
{
if(tree!=NULL)
{
PostTravsal(tree->lchild);
PostTravsal(tree->rchild);
cout<<tree->data;
}
}
void PrintNode(BinTree tree)//输出二叉树的叶子节点
{
if(tree!=NULL)
{
if(tree->lchild==NULL&&tree->rchild==NULL)
cout<<tree->data;
PreTravsal(tree->lchild);
PreTravsal(tree->rchild);
}
}
int high(BinTree tree)//输出二叉树的高度
{
if(tree!=NULL)
{
return(max(high(tree->lchild),high(tree->rchild)))+1;
}
else
return 0;
}
int main()
{
BinTree root=creat();
PreTravsal(root);
InTravsal(root);
PostTravsal(root);
cout<<high(root);
}