POJ 2255 Tree Recovery 二叉树的遍历
前序和中序输入二叉树,后序输出二叉树:核心思想只有一个,前序的每个根都把中序分成了两部分,例如
DBACEGF ABCDEFG
D把中序遍历的结果分成了ABC和EFG两部分,实际上,这就是D这个根的左右子树,而接下来的B,把ABC分成了A和C两部分,那么,A,C实际上是B的左右子树而E把EFG分成了空集和FG两部分,也就是说,E只有右子树,F把FG分成了空集和G两部分,即F只有右子树G。个人认为理解了思路以后,最重要的细节就是遍历 前序遍历 的结果时,你的那个p的增加(这里的P指的是要把前序遍历一个一个字符的扫一遍所用的变量)
还有就是C++的格式还是有很多不清楚,比如在一个类里面,只有static的变量才能直接赋初值,struct也可以有构造函数。。。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
;
struct node{
char data;
node * left;
node * right;
node(){//initialise the value must be in a construct function
data='?';
left=NULL;
right=NULL;
}
};
int len;
char s1[maxn],s2[maxn];
struct twobranch_tree{
node * root;
int p;
twobranch_tree(){
root=new node;
p=;
}
void create(node *i,int l,int r){
if(r==l){
p++;
i->data=s2[r];
i->left=NULL;
i->right=NULL;
return;
}
if(p>=len)return;
i->data=s1[p];
int x=strchr(s2,s1[p])-s2;
p++;
if(x>l){
i->left=new node;
create(i->left,l,x-);
}
if(x<r){
i->right=new node;
create(i->right,x+,r);
}
}
void LRN(node * i){
)return;
LRN(i->left);
LRN(i->right);
printf("%c",i->data);
}
};
int main(){
while(scanf("%s%s",s1,s2)!=EOF){
twobranch_tree tree;
len=strlen(s1);
tree.create(tree.root,,len-);
tree.LRN(tree.root);
printf("\n");
}
;
}
Code
POJ 2255 Tree Recovery 二叉树的遍历的更多相关文章
- POJ 2255 Tree Recovery——二叉树的前序遍历、后序遍历、中序遍历规则(递归)
1.前序遍历的规则:(根左右) (1)访问根节点 (2)前序遍历左子树 (3)前序遍历右子树 对于图中二叉树,前序遍历结果:ABDECF 2.中序遍历的规则:(左根右) (1)中序遍历左子树 (2)访 ...
- POJ 2255 Tree Recovery 树的遍历,分治 难度:0
http://poj.org/problem?id=2255 #include<cstdio> #include <cstring> using namespace std; ...
- POJ 2255 Tree Recovery(根据前序遍历和中序遍历,输出后序遍历)
题意:给出一颗二叉树的前序遍历和中序遍历的序列,让你输出后序遍历的序列. 思路:见代码,采用递归. #include <iostream> #include <stdio.h> ...
- POJ 2255 Tree Recovery 二叉树恢复
一道和Leetcode的一道题目基本上一样的题目. 给出前序遍历和中序遍历序列,要求依据这些信息恢复一颗二叉树的原貌,然后按后序遍历序列输出. Leetcode上有给出后序和中序,恢复二叉树的. 只是 ...
- POJ 2255. Tree Recovery
Tree Recovery Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11939 Accepted: 7493 De ...
- poj 2255 Tree Recovery 分治
Tree Recovery Description Little Valentine liked playing with binary trees very much. Her favorite g ...
- poj 2255 Tree Recovery(求后序遍历,二叉树)
版权声明:本文为博主原创文章,未经博主同意不得转载.vasttian https://blog.csdn.net/u012860063/article/details/37699219 转载请注明出处 ...
- POJ 2255 Tree Recovery && Ulm Local 1997 Tree Recovery (二叉树的前中后序遍历)
链接:poj.org/problem?id=2255 本文链接:http://www.cnblogs.com/Ash-ly/p/5463375.html 题意: 分别给你一个二叉树的前序遍历序列和中序 ...
- POJ 2255 Tree Recoveryw(二叉树)
题目原网址:http://poj.org/problem?id=2255 题目中文翻译: Description 小瓦伦丁非常喜欢玩二叉树. 她最喜欢的游戏是用大写字母构造的随机二叉树. 这是她的一个 ...
随机推荐
- java内部类的定义原则
/*内部类的访问规则:1,内部类可以直接访问外部类中的成员,包括私有. 之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this2,外部类要访问内部类,必 ...
- VS2013编译GLUI
vs自带的OpenGL为1.1版本,太老了. 1,编译glut https://www.opengl.org/resources/libraries/glut/glut37.zip 查看生成路径,可以 ...
- 给LinkLabel文本绘制颜色
我在form中有一个linkLabel,显示文字是“中秋快乐”.现在我希望其中的“中秋”两个字用红色字体显示,“快乐”用黑色字体.请问如何在一个linkLabel中实现上述效果? 答案: privat ...
- c#winform,制作可编辑html编辑器
大神勿喷,新手记笔记 材料 网上下载kindeditor,动手在写个htmldome,图中的e.html.然后全部扔到了bin/debug下面,(x86是要扔到bin/x86/debug) 中间bod ...
- Java.lang.RuntimeException: Unable to instantiate activity ComponentInfo
如果你更新了ADT的新版本,而工程文件中使用了其他的jar包,也可能会出现"java.lang.RuntimeException: Unable to instantiate activit ...
- asp.net get server control id from javascript
var WhateverValue = document.getElementById('<%= saveValue.ClientID %>').value
- C# 获取中文星期的两种方法
//方法一 public string Week() { string[] weekdays = { "星期日", "星期一", "星期二" ...
- Java语法糖
1.创建数组:String[] s = new String[]{"1","2","3"};//这种方法可以在不指定数组元素数量的情况下生成 ...
- phpcms v9二级栏目生成到根目录后三级栏目无法访问的解决办法
这个栏目问题折腾了我一天多,可怜我这个美工又不会程序!!! 我的问题是: 我的栏目设置如下: 一级栏目[生成到根目录(是)]> 二级栏目[生成到根目录(是)] > 三级栏目[生成到根目录( ...
- Pandas简易入门(二)
目录: 处理缺失数据 制作透视图 删除含空数据的行和列 多行索引 使用apply函数 本节主要介绍如何处理缺失的数据,可以参考原文:https://www. ...