程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 代碼-求c++大神!幫忙改程序!要求是輸入先序中序得出後序,並打印二叉樹。

代碼-求c++大神!幫忙改程序!要求是輸入先序中序得出後序,並打印二叉樹。

編輯:編程解疑
求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;

}

最佳回答:


http://www.cnblogs.com/ITEagle/archive/2011/09/19/2180839.html
http://blog.csdn.net/nyist327/article/details/27736239

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved