qq_36865094
qq_36865094
采纳率80%
2016-11-29 08:25

求c++大神!帮忙改程序!要求是输入先序中序得出后序,并打印二叉树。

10
已采纳

结果例如输入:先序ABCDE,中序BADCE
输出:后序BDECA并打印二叉树
A
|_B
|_C
|_D
|_E
代码如下
#include
#include "stdio.h"
using namespace std;

class BinarytreeNode
{
public:
int data;
BinarytreeNode *left;
BinarytreeNode *right;
BinarytreeNode(int value=0, BinarytreeNode *l=NULL,BinarytreeNode *r=NULL):data(value),left(l),right(r)
{}

};

BinarytreeNode* createtree(int *in, int *pre, int n)
{
if(n==0) return NULL;
int k=0;
while(pre[0]!=in[k]){k++;}
BinarytreeNode *rootelement=new BinarytreeNode(pre[0]);//应该不会内存泄露的,程序结束时,对象调用析构函数,自动释放
rootelement->left=createtree(pre+1,in,k);
rootelement->right=createtree(pre+k+1,in+k+1,n-k-1);
return rootelement;

}

void printelement(BinarytreeNode *element)
{
cout<data<<",";
}

void postorder(BinarytreeNode *subtree)
{

 if(subtree!=NULL)
 {
 postorder(subtree->left);
 postorder(subtree->right);
 printelement(subtree);
 }

}

int main()
{
int pre[7]={1,2,4,5,3,6,7};
int in[7]={4,2,5,1,6,3,7};
BinarytreeNode *element=createtree(in,pre,7);

postorder(element);
while(1); 

return 0;

}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答