当前位置: 首页 > wzjs >正文

桂林北站地图今天今日头条新闻

桂林北站地图,今天今日头条新闻,怎样做一个公司网站,手机网站建设 的作用题目描述 我们可以把由 “0” 和 “1” 组成的字符串分为三类:全 “0” 串称为 B 串,全 “1” 串称为 I 串,既含 “0” 又含 “1” 的串则称为 F 串。 FBI 树是一种二叉树,它的结点类型也包括 F 结点,B 结点和 I 结点三…
题目描述

 我们可以把由 “0” 和 “1” 组成的字符串分为三类:全 “0” 串称为 B 串,全 “1” 串称为 I 串,既含 “0” 又含 “1” 的串则称为 F 串。
FBI 树是一种二叉树,它的结点类型也包括 F 结点,B 结点和 I 结点三种。由一个长度为 2N 的 “01” 串 S 可以构造出一棵 FBI 树 T,递归的构造方法如下:

  1. T 的根结点为 R,其类型与串 S 的类型相同;
  2. 若串 S 的长度大于 1,将串 S 从中间分开,分为等长的左右子串 S1 和 S2;由左子串 S1 构造 R 的左子树 T1,由右子串 S2 构造 R 的右子树 T2。

现在给定一个长度为 2N 的 “01” 串,请用上述构造方法构造出一棵 FBI 树,并输出它的后序遍历序列。

对于 40% 的数据,N≤2;

对于全部的数据,N≤10。

输入

第一行是一个整数 N(0≤N≤10),

第二行是一个长度为 2N 的 01 串。

输出

一个字符串,即 FBI 树的后序遍历序列。 

样例输入输出

输入:               输出:

3                        IBFBBBFIBFIIIFF
10001011

方法一:

 构建二叉树,这样比较直观。

STEP 1:构建结点池,使用指针p来跟踪下一个可用节点

STEP 2:建树,

        1.首先判断是否为叶子节点,字符1为"I",0为'B'

        2.构建左右子树,并确定节点类型:左右都是B->B,都是I->I,其他F

STEP 3:后序遍历函数,背口诀:先左后右最后根

STEP 4:输入N(在一和二中都不做使用)及01字符串,输入,建FBI树,后序遍历输出,完成。

#include<bits/stdc++.h>
#define N 2505
using namespace std;
struct Node
{char val;Node*left,*right;
}node[N],*p=node;
//根据01串构建fbl 
Node*createTree(string s)
{Node*np=++p;if(s.length()==1){if(s=="1"){np->val='I';}else{np->val='B';}return np;}np->left=createTree(s.substr(0,s.length()/2));np->right=createTree(s.substr(s.length()/2));if(np->left->val=='B'&&np->right->val=='B'){np->val='B';}else if(np->left->val=='I'&&np->right->val=='I'){np->val='I';}else{np->val='F';}return np;
}
//后序遍历以r为根的子树 
void postOrder(Node*r)
{if(r==NULL){return;}postOrder(r->left);postOrder(r->right);cout<<r->val;
}
int main()
{int a;string s;cin>>a>>s;Node*root=createTree(s);postOrder(root);return 0;
}

 

方法二:

 递归,代码短,推荐使用。为了读者朋友有更好的收获,请先把方法一读完,更好理解方法二。

STEP 1:跟方法1一样,长度为1(即叶子节点)直接判断。

STEP 2:把字符串分成左右两部分进行递归,合并所得结果并确定类型,确定类型的方法与方法一一样,只不过改一下类型。

STEP 3:输入,调用。

#include<bits/stdc++.h>
using namespace std;
string FBL(string str)
{if(str.length()==1){if(str=="1"){cout<<"I";return"I";}else{cout<<"B";return "B";}}else{string left=FBL(str.substr(0,str.length()/2)),right=FBL(str.substr(str.length()/2,str.length()/2));string child=left+right;if(child=="II"){cout<<"I";return "I";}else if(child=="BB"){cout<<"B";return "B";}else{cout<<"F";return"F";}}
}   
int main()
{int n;string s;cin>>n>>s;FBL(s);return 0;
}

http://www.dtcms.com/wzjs/274870.html

相关文章:

  • 沧州网站网站建设销售怎么找客户源
  • 为什么做旅游网站厦门seo优化推广
  • 网站开发详细设计网络营销做得比较成功的案例
  • 莱阳做网站互联网行业都有哪些工作
  • 沈阳网站提升排名网络营销与电子商务的区别
  • 手工艺品网站建设的选题背景网络营销的现状和发展趋势
  • 给网站写教案做课件一节课多少钱搜狗友链交换
  • php动态网站开发基本流程百度收录网站链接入口
  • 网站怎么制作做专注于seo顾问
  • 做网站开发钱pc网站优化排名软件
  • tq网站建设搜狗网
  • 网站建设的安全性太原seo霸屏
  • 刷题网站怎么做排名
  • 做网站找哪个公司好黑科技引流软件是真的吗
  • 弹性web做网站好不好百度推广公司
  • 3030wa网站开发学校企业网站推广渠道
  • 做淘客网站哪个cms好头条权重查询
  • 用vs做web网站时下拉框长沙关键词优化服务
  • 网站网页区别是什么意思百度seo优化技巧
  • 专业网页设计模板北京seo优化方案
  • php怎么做p2p网站网站优化 福州
  • 北京网站制作公司有哪些免费建站网站一站式
  • 郑州做网站建设公司排名竞价推广怎样管理
  • 做赌场网站代理网站需要怎么优化比较好
  • 实力网站建设百度指数官网查询
  • 日本二手手表网站北京百度推广代理公司
  • 软件下载网站源码常见的推广方式
  • 国外优秀网站建设网站建设一般多少钱
  • 东莞专业的网络推广搜索引擎优化简称
  • ps扩展插件网站站长工具seo排名查询