本文所用到的二叉树:
#include<iostream>
#include<stdio.h>
using namespace std;
typedef struct BT
{
char data; //二叉树数据域
BT *Left; //二叉树左节点
BT *right; //二叉树右节点
}BTree;
void create(BTree *&head)
{
//建立二叉树
char c;
cin>>c;
if(c!='#')
{
head=new BTree;
head->data=c;
create(head->Left); //创建左子树
create(head->right); //创建右子树
}
else
{
head=NULL;
return;
}
}
void preOrderTraverse(BTree *head)
{
if(!head)
return;
cout<<head->data<<"\t"; //输出根节点信息,注:这里的根节点是相对的,因为每一颗子树也有根节点
preOrderTraverse( head->Left);//遍历左子树
preOrderTraverse( head->right);//遍历右子树
}
void inOrderTraverse(BTree *head)
{
if(!head)
return;
inOrderTraverse( head->Left);
cout<<head->data<<"\t";
inOrderTraverse( head->right);
}
void lastOrderTraverse(BTree *head)
{
if(!head)
return;
lastOrderTraverse( head->Left);
lastOrderTraverse( head->right);
cout<<head->data<<"\t";
}
int main(void)
{
BTree *head;
cout<<"请输入你想要建立的二叉树:"<<endl;
create(head);
cout<<"前序遍历 : ";
preOrderTraverse(head);
cout<<endl<<"中序遍历 :";
inOrderTraverse(head);
cout<<endl<<"后序遍历 : ";
lastOrderTraverse(head);
return 0;
}
运行结果: