本文主要是介绍#35. 二叉树遍历(flist)(4月3日),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
说明
输出格式
输出文件 flist.out 就一行,表示二叉树的先序序列。
样例
输入数据 1
DBEAC
ABCDE
输出数据 1
ABDEC
【思路】
根据广度优先搜索我们可以知道结点的深度,然后在中序遍历里找到当前结点所匹配的位置,就能找到当前节点的左右孩子,一直遍历下去即可。
【代码】
#include<iostream>
#include<string>
using namespace std;
string a,b;
void createtree(int la,int ra,int c)
{bool x;cout<<b[c];int pos=a.find(b[c]);for(int i=c+1;i<b.size() ;i++){x=0;for(int j=la;j<pos ;j++){if(a[j]==b[i]){createtree(la,pos-1,i);x=1;break;}}if(x) break;}for(int i=c+1;i<b.size() ;i++){int pos=a.find(b[c]);for(int j=pos+1;j<=ra ;j++){x=0;if(a[j]==b[i]){x=1;createtree(pos+1,ra,i);break;}}if(x) break;}return;
}int main()
{cin>>a>>b;createtree(0 ,b.size() ,0);return 0;}
这篇关于#35. 二叉树遍历(flist)(4月3日)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!