前序和中序输入二叉树,后序输出二叉树:核心思想只有一个,前序的每个根都把中序分成了两部分,例如

  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 二叉树的遍历的更多相关文章

  1. POJ 2255 Tree Recovery——二叉树的前序遍历、后序遍历、中序遍历规则(递归)

    1.前序遍历的规则:(根左右) (1)访问根节点 (2)前序遍历左子树 (3)前序遍历右子树 对于图中二叉树,前序遍历结果:ABDECF 2.中序遍历的规则:(左根右) (1)中序遍历左子树 (2)访 ...

  2. POJ 2255 Tree Recovery 树的遍历,分治 难度:0

    http://poj.org/problem?id=2255 #include<cstdio> #include <cstring> using namespace std; ...

  3. POJ 2255 Tree Recovery(根据前序遍历和中序遍历,输出后序遍历)

    题意:给出一颗二叉树的前序遍历和中序遍历的序列,让你输出后序遍历的序列. 思路:见代码,采用递归. #include <iostream> #include <stdio.h> ...

  4. POJ 2255 Tree Recovery 二叉树恢复

    一道和Leetcode的一道题目基本上一样的题目. 给出前序遍历和中序遍历序列,要求依据这些信息恢复一颗二叉树的原貌,然后按后序遍历序列输出. Leetcode上有给出后序和中序,恢复二叉树的. 只是 ...

  5. POJ 2255. Tree Recovery

    Tree Recovery Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11939   Accepted: 7493 De ...

  6. poj 2255 Tree Recovery 分治

    Tree Recovery Description Little Valentine liked playing with binary trees very much. Her favorite g ...

  7. poj 2255 Tree Recovery(求后序遍历,二叉树)

    版权声明:本文为博主原创文章,未经博主同意不得转载.vasttian https://blog.csdn.net/u012860063/article/details/37699219 转载请注明出处 ...

  8. POJ 2255 Tree Recovery && Ulm Local 1997 Tree Recovery (二叉树的前中后序遍历)

    链接:poj.org/problem?id=2255 本文链接:http://www.cnblogs.com/Ash-ly/p/5463375.html 题意: 分别给你一个二叉树的前序遍历序列和中序 ...

  9. POJ 2255 Tree Recoveryw(二叉树)

    题目原网址:http://poj.org/problem?id=2255 题目中文翻译: Description 小瓦伦丁非常喜欢玩二叉树. 她最喜欢的游戏是用大写字母构造的随机二叉树. 这是她的一个 ...

随机推荐

  1. CSS 样式二

    CSS文本样式 text-align:设置文本的对齐方式 取值: left 向左对齐 right:向右对齐 center:居中对齐 text-indent:设置文本的首行缩进 例如,字体设为12px, ...

  2. hash桶

    #include <stdio.h> #include <stdlib.h> #include "chain.c" //include the chain. ...

  3. 关于C++引用的一些注意点

    C++的引用首先跟指针的最大区别就是引用不是一个对象,而指针是一个对象:其次引用在其定义时就要初始化,而指针可以不用. ; int &rval = val; 此时rval就绑定了val,其实就 ...

  4. 操作xml文档的常用方式

    1.操作XML文档的两种常用方式: 1)使用XmlReader类和XmlWriter类操作 XmlReader是基于数据流的,占用极少的内存,是只读方式的,所以速度极快.只能采用遍历的模式查找数据节点 ...

  5. NodeJS + Socket.io搭建聊天服务器

    第一步:安装node git clone https://github.com/joyent/node.git cd node git checkout v0.10.33-release ./conf ...

  6. maven项目转eclipse工程的命令:eclipse.bat

    call mvn clean:clean call mvn eclipse:eclipse -DdownloadSources=true @pause 复制以上内容,保存为eclipse.bat 以后 ...

  7. PHPCMS v9栏目添加字段及描述编辑器修改方法

    为PHPCMS v9栏目添加字段和把描述的textarea编辑器变成fceditor编辑器的方法.如下: 1. 添加数据库字段:description1,添加位置:v9_catetory表 2. 在c ...

  8. 《C和指针》 读书笔记 -- 第11章 动态内存分配

    1.C函数库提供了两个函数,malloc和free,分别用于执行动态内存分配和释放,这些函数维护一个可用内存池. void *malloc(size_t size);//返回指向分配的内存块起始位置的 ...

  9. 就谈个py 的装饰器 decorator

    很早很早就知道有这么个 装饰器的东西,叫的非常神秘. 包括c#  和 java 中都有这个东西, c#中叫做attribut 特性,java中叫做Annotation 注解,在偷偷学习c#教程的时候, ...

  10. fedora 20 PIL

    今天安装PIL花了我好多的时间. 刚开始,我手动下载PIL原码,编译安装. 启动我的django项目,报下面的错误,完全不懂是么意思. CommandError: One or more models ...