二叉树的创建
库文件和结构体定义
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct Tree
{
int data;
struct Tree* lchild;
struct Tree* rchild;
}Tree;
前序创建二叉树
Tree* createtree()
{
Tree* p;
int c;
cin>>c;
if(c==0)
{
p=NULL;
}
else
{
p=new Tree;
p->data=c;
p->lchild=createtree();
p->rchild=createtree();
}
return p;
}
先序遍历
void preorder(Tree *p)
{
if(p!=NULL)
{
cout<<p->data<<" ";
preorder(p->lchild);
preorder(p->rchild);
}
}
中序遍历
void inorder(Tree *p)
{
if(p!=NULL)
{
preorder(p->lchild);
cout<<p->data<<" ";
preorder(p->rchild);
}
}
后续遍历
void postorder(Tree *p)
{
if(p!=NULL)
{
preorder(p->lchild);
preorder(p->rchild);
cout<<p->data<<" ";
}
}
主函数
int main()
{
Tree* tree=NULL;
cout<<"创建一个二叉树(每两个数之间用空格间断,0代表空)"<<endl;
tree=createtree();
cout<<"二叉树创建完成"<<endl;
cout<<"前序遍历二叉树"<<endl;
preorder(tree);
cout<<endl;
cout<<"中序遍历二叉树"<<endl;
inorder(tree);
cout<<endl;
cout<<"后序遍历二叉树"<<endl;
postorder(tree);
return 0;
}