二叉树遍历
带有空叶子的先序序列
可以唯一确定树的结构
用分治法的思想
step1 扫描序列
step2 读字符构建树
a设置根
b设置左子树
c设置右子树
step3 不断分解->'#'空叶子 最小问题
#include <iostream>
using namespace std;
struct TreeNode{
char data;
TreeNode* left;
TreeNode*right;
};
TreeNode* RecursiveBuildTree(int &i,char str[]){
char c=str[i];
++i;
if(c=='#'){
return NULL;
}else{
TreeNode* pNew=new TreeNode;
pNew->data=c;
pNew->left= RecursiveBuildTree(i,str);
pNew->right= RecursiveBuildTree(i,str);
return pNew;
}
}
void InOrder(TreeNode* proot){
if(proot==NULL){
return;
}
InOrder(proot->left);
printf("%c ",proot->data);
InOrder(proot->right);
}
int main(){
char str[1000];
while(scanf("%s",str)!=EOF){
int i=0;
TreeNode* proot= RecursiveBuildTree(i,str);
InOrder(proot);
printf("\n");
}
}