顺序二叉树
源代码:
#include"iostream"
using namespace std;
class BiTree
{
public:
BiTree();
~BiTree();
int preorder(int n);
int inorder(int n);
int postorder(int n);
int creat_BT();
int visit(int n);
int Tree[100];
};
BiTree::BiTree()
{
memset(Tree/*数组名*/,0/*要赋的值*/,sizeof(Tree)/*数组元素的个数*/);//将数组Tree全部元素初始化为0,memset为初始化函数
}
BiTree::~BiTree()
{}
int BiTree::creat_BT()//建立二叉树
{
int n,i=1;
cout<<"请输入数字结点:(0表示空,-1表示结束)"<<endl;
while(cin>>n&&n!=-1)
{
Tree[i]=n;
i++;
}
return 0;
}
int BiTree::visit(int n)//访问结点
{
if(Tree[n]!=-1&&Tree[n]!=0)
cout<<Tree[n]<<" ";
return 0;
}
int BiTree::preorder(int n)//前序遍历
{
if(Tree[n]!=-1&&Tree[n]!=0)
{
visit(n);
preorder(2*n);
preorder(2*n+1);
}
return 0;
}
int BiTree::inorder(int n)//中序遍历
{
if(Tree[n]!=-1&&Tree[n]!=0)
{
inorder(2*n);
visit(n);
inorder(2*n+1);
}
return 0;
}
int BiTree::postorder(int n)//后序遍历
{
if(Tree[n]!=-1&&Tree[n]!=0)
{
postorder(2*n);
postorder(2*n+1);
visit(n);
}
return 0;
}
int main()
{
BiTree b1;
b1.creat_BT();
cout<<"前序遍历\n";
b1.preorder(1);
cout<<endl;
cout<<"中序遍历\n";
b1.inorder(1);
cout<<endl;
cout<<"后序遍历\n";
b1.postorder(1);
cout<<endl;
return 0;
}
运行结果: