1.树
从简单的二叉树 入手 ;实现树的链式存储;完成三种遍历输出
#include<bits/stdc++.h>
using namespace std;
typedef struct tree *binT;
typedef binT pos;
struct tree{
char data;
binT left;
binT right;
};
binT creattree(){
char ch;cin>>ch;//输入
//判断是否是空树
if(ch == '#')
{
return NULL;
}
else
{
binT node = (binT)malloc(sizeof(tree));
node->left = creattree();
node->data=ch;
node->right = creattree();
return node;
}
}
void printX(binT head)//先序遍历(根左右)
{
if(head){
cout<<head->data<<endl;
//cout<<head<<" "<<head->data<<endl;
printX(head->left);
printX(head->right);
}
}
void printZ(binT head)//中序遍历(左根右)
{
if(head){
printZ(head->left);
cout<<head->data<<endl;
printZ(head->right);
}
}
void printH(binT head)///后序遍历(左右根)
{
if(head){
printH(head->left);
printH(head->right);
cout<<head->data<<endl;
}
}
int main(){
binT Tree = NULL;
Tree=creattree();
cout<<"先序遍历:"<<endl;
cout<<"------------------"<<endl;
printX(Tree);
cout<<"------------------"<<endl;
cout<<"中序遍历:"<<endl;
cout<<"------------------"<<endl;
printZ(Tree);
cout<<"------------------"<<endl;
cout<<"后序遍历:"<<endl;
cout<<"------------------"<<endl;
printH(Tree);
cout<<"------------------"<<endl;
}
//输入
AB##C##
//输出
先序遍历:
------------------
A
B
C
------------------
中序遍历:
------------------
B
A
C
------------------
后序遍历:
------------------
B
C
A
------------------