今天学习了用数组模拟二叉树
#include<iostream>
using namespace std;
const int N=1e5+10;
char tree[N];
void creattree(int x)
{
char c;
cin >> c;
tree[x]=c;
creattree(2*x+1);
creattree(2*x+2);
}
void print1(int x)
{
if(tree[x]=='\0')
return;
cout<<tree[x];
print1(2*x+1);
print1(2*x+2);
}
void print2(int x)
{
if(tree[x]=='\0')
return;
print1(2*x+1);
cout<<tree[x];
print1(2*x+2);
}
void print3(int x)
{
if(tree[x]=='\0')
return;
print1(2*x+1);
cout<<tree[x];
print1(2*x+2);
}
int main()
{
creattree(0);
print1(0);
print2(0);
print3(0);
return 0;
}
输入二叉树的先序序列,这里用到了一个知识点,当某个节点为i时,则它的左孩子为2i,右孩子为2i+1(但根节点为0时,则左孩子为2i+1,右孩子为2i+2),则不断给二叉树的根节点赋值,再给左子树赋值,在给右子树赋值。最后在分别输出先序,中序,后序序列输出。