zoukankan      html  css  js  c++  java
  • 纪中生活 1.5

    题目:

    在众多的数据结构中,二叉树是一种特殊而重要的结构,有着广泛的应用。二叉树或者是一个节点,或者有且仅有一个节点位二叉树的根,其余节点被分成两个互不相交的子集,一个作为左子集,另一个作为右子集。每个子集又是一个二叉树。
    遍历一棵二叉树就是按某条搜索路径巡访其中每个节点,使得每个节点均被访问一次,而且仅被访问一次。最常用的有三种遍历方式:
    (1)前序遍历:若二叉树为空,则空操作;否则先访问根节点,接着前序遍历左子树,最后前序遍历右子树。
    (2)中序遍历:若二叉树为空,则空操作;否则先中序遍历左子树,接着访问根节点,最后再中序遍历右子树。
    (3)后序遍历:若二叉树为空,则空操作;否则先后序遍历左子树,接着后序遍历右子树,最后再访问根节点。

    例如图1所示的二叉树前序遍历的顺序是ABCD,中序遍历的顺序是CBAD,后序遍历的顺序是CBDA。
    对一棵二叉树,如果给出前序遍历和中序遍历的节点访问顺序,那么后序遍历的顺序是唯一确定的,也很方便地求出来。但如果现在只知道前序遍历和后序遍历的顺序,中序遍历的顺序是不确定的,例如:前序遍历的顺序是ABCD,而后序遍历的顺序是CBDA,那么就有两棵二叉树满足这样的顺序,见图1和图2。
    现在的问题是给定前序遍历和后序遍历的顺序,要求出总共有多少棵不同形态的二叉树满足这样的遍历顺序。

    输入:

    整个输入有两行,第一行给出前序遍历的访问顺序,第二行给出后序遍历的访问顺序。

    二叉树的节点用一个大写字母表示,不会有两个节点标上相同字母。输入数据不包含空格,且保证至少有一棵二叉树符合要求。

    输出:

    输出一个整数,为符合要求的不同形态的二叉树的数目。
     

    样例输入:

    ABCD
    CBDA
    

    样例输出:

    2

    方案:

    方法1: 

    暴力构造二叉树,在判断是否符合要求。 
    预计得分:10左右

    方法2: 

    直接输出样例 
    得分:30

    正解:

    当我们把后续遍历翻转过来看时,顺序就变成了根右左。

    当两个节点是连接在一起且有一个是叶节点,那么它们在两个遍历中也是一样的。

    可以用邻接矩阵进行优化:空间换时间。

    其实可以不优化

    code:

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 using namespace std;
     5 long long power(int x) {
     6     long long t=1;
     7     for (int i=0; i<x; i++) {
     8         t*=2;
     9     }
    10     return t;
    11 }
    12 int main() {
    13     //freopen("tree.in", "r", stdin);
    14     //freopen("tree.out", "w", stdout);
    15     char fir[100000], sec[100000];
    16     cin>>fir>>sec;
    17     int len=strlen(fir);
    18     if (len==1) cout<<1;
    19     else {
    20         int sum=0;
    21         for (int i=0; i<len-1; i++) {
    22             for (int j=len-1; j>0; j--) {
    23                 if (fir[i]==sec[j] && fir[i+1]==sec[j-1]) {
    24                     sum++;
    25                     break;
    26                 }
    27             }
    28         }
    29         cout<<power(sum);
    30     }
    31     return 0;
    32 }
  • 相关阅读:
    购物车好作业
    范例
    三级菜单
    Centos7部署PXE+Kickstart 实现批量安装操作系统
    CentOS 8.x下编译php 7.4、php5.6、php5.3多版本报错处理教程
    CentOS 8.x 编译安装LNMP(Linux + Nginx + MySQL + PHP)架构部署动态网站环境
    CentOS 8.x系统安装配置图解教程
    CentOS6.x 7.x 8.x 服务器系统初始化设置
    VMWare安装CentOS 7系统 & 操作系统优化
    CentOS 7 部署Memcached服务器——超级详细
  • 原文地址:https://www.cnblogs.com/ouzijun-OJ/p/11389270.html
Copyright © 2011-2022 走看看