由顺序方式存储的完全二叉树进行重建
按顺序方式存储的一棵完全二叉树的结点记录,结点个数为n。根据所输入的顺序结构的结点记录建立二叉树,输出树的先序,中序和后序遍历结果。
注:数字“0”表示不存在此结点,没有孩子结点。
输入:树结点个数n
顺序方式存储的完全二叉树
输出:
先序遍历输出
中序遍历输出
后序遍历输出
#include <iostream>
using namespace std;
class binTree
{
private:
int *data;
int length;
public:
binTree(int n)
{
length=n;
data=new int [n+1];
}
~binTree()
{
delete data;
}
void inTree()
{
for(int i=1;i<=length;i++)
cin>>data[i];
}
void preOrder(int n)
{
if(n>length ||data[n]==0)
cout<<"";
else
{
cout<<data[n]<<" ";
preOrder(2*n);
preOrder(2*n+1);
}
}
void inOrder(int n)
{
if(n>length ||data[n]==0)
cout<<"";
else
{
inOrder(2*n);
cout<<data[n]<<" ";
inOrder(2*n+1);
}
}
void postOrder(int n)
{
if(n>length ||data[n]==0)
cout<<"";
else
{
postOrder(2*n);
postOrder(2*n+1);
cout<<data[n]<<" ";
}
}
};
int main()
{
int n;
cin>>n;
binTree tree(n);
tree.inTree();
tree.preOrder(1);
cout<<endl;
tree.inOrder(1);
cout<<endl;
tree.postOrder(1);
cout<<endl;
}