#include<iostream>
using namespace std;
typedef struct TreeNode
{
char Data;
TreeNode* Left;
TreeNode* Right;
}*BinTree;
BinTree InPostpre(char* inorder, char * postorder, int length)
{
BinTree BT;
if (length >= 1)
{
BT = (BinTree)malloc(sizeof(TreeNode));
BT->Data = *(postorder+length-1);
BT->Right = BT->Left = NULL;
int i = 0;
for (i = 0; i < length; i++)
{
if (inorder[i] == *(postorder + length - 1))
break;
}
BT->Left = InPostpre(inorder, postorder, i);
BT->Right = InPostpre(inorder + i + 1, postorder + i , length - (i + 1));
return BT;
}
return NULL;
}
void PreOrderTraversal(BinTree T)
{
if (T)
{
printf("%c", T->Data);
PreOrderTraversal(T->Left);
PreOrderTraversal(T->Right);
}
}
int main()
{
char *inorder = "ADEFGHMZ";
char *postorder = "AEFDHZMG";
BinTree T = InPostpre(inorder, postorder, 8);
//cout << T->Data << " " << T->Right << " " << T->Left;
PreOrderTraversal(T);
return 0;
}
二叉树利用中序+后序----->前序
最新推荐文章于 2021-04-14 21:30:28 发布