文章
60
粉丝
361
获赞
43
访问
524.5k
1、前序遍历的第一元素是整个二叉树的根节点
2、中序遍历中根节点的左边的元素是左子树,根节点右边的元素是右子树
3、后序遍历的最后一个元素是整个二叉树的根节点
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
void postorder(string preorder ,string midorder)
{
if(preorder.size()==0)
return;
char root=preorder[0];
int index=midorder.find(root);
string preorderleft=preorder.substr(1,index);//下一个前序的左子树
string preorderright=preorder.substr(index+1);//下一个前序的右子树
string midorderleft=midorder.substr(0,index);//下一个中序的左子树
string midorderright=midorder.substr(index+1);//下一个中序的右子树
postorder(preorderleft,midorderleft);
postorder(preorderright,midorderright);
cout<<root;
}
int main()
{
string preorder,midorder;
while(cin>>preorder>>midorder)
{
postorder(preorder ,midorder);
cout<<endl;
}
return 0;
}
登录后发布评论
简单明了