qq_36865094
2016-11-29 08:25
采纳率: 80%
浏览 1.1k

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

结果例如输入:先序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条回答 默认 最新

  • zqbnqsdsmd 2016-11-29 11:03
    已采纳
    已采纳该答案
    打赏 评论
  • shen_wei 2016-11-29 09:21

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

    打赏 评论

相关推荐 更多相似问题