已知二叉树的前序和后序遍历,怎么求中序遍历啊?也就是求可以确定多少种树,C或者C++代码也行啊!
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 01:37:52
![已知二叉树的前序和后序遍历,怎么求中序遍历啊?也就是求可以确定多少种树,C或者C++代码也行啊!](/uploads/image/z/8552717-53-7.jpg?t=%E5%B7%B2%E7%9F%A5%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E5%92%8C%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86%2C%E6%80%8E%E4%B9%88%E6%B1%82%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86%E5%95%8A%3F%E4%B9%9F%E5%B0%B1%E6%98%AF%E6%B1%82%E5%8F%AF%E4%BB%A5%E7%A1%AE%E5%AE%9A%E5%A4%9A%E5%B0%91%E7%A7%8D%E6%A0%91%2CC%E6%88%96%E8%80%85C%2B%2B%E4%BB%A3%E7%A0%81%E4%B9%9F%E8%A1%8C%E5%95%8A%21)
已知二叉树的前序和后序遍历,怎么求中序遍历啊?也就是求可以确定多少种树,C或者C++代码也行啊!
已知二叉树的前序和后序遍历,怎么求中序遍历啊?
也就是求可以确定多少种树,C或者C++代码也行啊!
已知二叉树的前序和后序遍历,怎么求中序遍历啊?也就是求可以确定多少种树,C或者C++代码也行啊!
按照自己的思路写的,仅供参考,
int creat(BiTree &T, ElemType pre[],ElemType post[],int low_x,int high_x,int low_h,int high_h)
{//根据先序序列和后序序列建立二叉链表,先序序列和后序序列存于一维数组中,四个整型变量表示数组的范围,0号单元留空,函数返回可建立二叉树的数目
count=1;
if(low_x>high_x || low_h >high_h) {T==NULL;return count;}
if(low_x high_h])
{
T=new BiNode;
T->data=pre.elem[low_x];
}
if(low_x+1= low_h)
{
if(pre [low_x+1] ! = post [high_h-1])
{
顺序查找pre [low_x+1]在后序序列的位置a;
顺序查找post [high_h-1]在先序序列的位置b;
creat(T->lchild,pre,post,low_x+1,b-1,low_h,a);
creat(T->rchild,pre,post,b,high_x,a+1,high_h-1);
}
else if(pre [low_x+1] = = post [high_h-1])
{
count*=2;
请选择建立左子树或右子树,左输入0,右输入1,用L_R表示
cin>>L_R;
if(L_R= =0)
{
creat(T->lchild,pre,post,low_x+1,high_x,low_h,high_h-1);
creat(T->rchild,pre,post,1,0,1,0);
else {
creat(T->lchild,pre,post,1,0,1,0);
creat(T->rchild,pre,post,low_x+1,high_x,low_h,high_h-1);
}
}
if (low_x+1> high_x || high_h-1 < low_h)
{
creat(T->lchild,pre,post,1,0,1,0);
creat(T->rchild,pre,post, 1,0,1,0);
}
}