题解 | #二叉树遍历#
二叉树遍历
https://www.nowcoder.com/practice/6e732a9632bc4d12b442469aed7fe9ce
#include <iostream>
#include <string>
using namespace std;
struct TreeNode{
char data;
TreeNode* leftChild;
TreeNode* rightChild;
};
TreeNode* Build(string str1,string str2){
if(str1.size()==0) return NULL;
char c=str1[0];
TreeNode* root=(TreeNode*)malloc(sizeof(TreeNode));
root->data=c;
int position=str2.find(c);
root->leftChild=Build(str1.substr(1,position),str2.substr(0,position));
root->rightChild=Build(str1.substr(position+1),str2.substr(position+1));
return root;
}
void PostOrder(TreeNode* root){
if(root==NULL) return;
PostOrder(root->leftChild);
PostOrder(root->rightChild);
cout<<root->data;
return;
}
int main(){
string str1,str2;
while(cin>>str1>>str2){
TreeNode* root=Build(str1,str2);
PostOrder(root);
printf("\n");
}
return 0;
}

