#include<iostream>
#include<string.h>
using namespace std;
typedef struct TreeNode
{
char Data;
TreeNode* Left;
TreeNode* Right;
}*BinTree;
BinTree InPrePost(char* inorder, char * preorder, int length)
{
BinTree BT;
if (length >= 1)
{
BT = (BinTree)malloc(sizeof(TreeNode));
BT->Data = *preorder;
BT->Right = BT->Left = NULL;
int i = 0;
for (i = 0; i < length; i++)
{
if (inorder[i] == *preorder)
break;
}
BT->Left=InPrePost(inorder, preorder + 1, i);
BT->Right=InPrePost(inorder + i + 1, preorder + i + 1, length - (i + 1));
return BT;
}
return NULL;
}
void PostOrderTraversal(BinTree T)
{
if (T)
{
PostOrderTraversal(T->Left);
PostOrderTraversal(T->Right);
printf("%c", T->Data);
}
}
int main()
{
char *inorder = "ADEFGHMZ";
char *preorder = "GDAFEMHZ";
BinTree T=InPrePost(inorder, preorder, 8);
PostOrderTraversal(T);
return 0;
}
二叉树利用前序遍历+中序遍历---->后序遍历(把整个树建立起来)
最新推荐文章于 2018-09-10 20:39:17 发布