zoukankan      html  css  js  c++  java
  • 洛谷P1030求先序排列

    题目描述

    给出一棵二叉树的中序与后序排列。求出它的先序排列。(约定树结点用不同的大写字母表示,长度≤8

    输入输出格式

    输入格式:

     

    2行,均为大写字母组成的字符串,表示一棵二叉树的中序与后序排列。

     

    输出格式:

    1行,表示一棵二叉树的先序。

     

    输入输出样例

    输入样例#1: 复制
    BADC
    BDCA
    
    输出样例#1: 复制
    ABCD
    

    ****深度优先搜索,首先我们要知道一点,后序排列的最后一个点就是根所以根据中序排列我们一点点去推根,从而得到前序排列

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #include<cmath>
     5 using namespace std;
     6 int i,j,l;
     7 char c[10],s[10];
     8 int find(char d)
     9 {
    10     for(int i = 0;i <= l - 1;i++)
    11     {
    12         if(c[i] == d)
    13         {
    14             return i;
    15          } 
    16     }
    17 }
    18 void dfs(int t,int r,int b,int e)
    19 {
    20     int n = find(s[e]); 
    21     printf("%c",s[e]);
    22     if(n > t) //左子树 
    23     dfs(t,n- 1,b,e - r + n - 1); //右子树的数量是r - n 
    24     if(n < r) //右子树 
    25     dfs(n + 1,r,b + n - t,e - 1); //左子树的数量n - t 
    26 }
    27 int main()
    28 {
    29     scanf("%s",c);
    30     scanf("%s",s);
    31     l = strlen(s);
    32     dfs(0,l - 1,0,l - 1);
    33     return 0;
    34 }
  • 相关阅读:
    【设计模式
    【设计模式
    【设计模式
    【设计模式
    【设计模式
    【设计模式
    实干猪
    Mysql 千万级快速查询|分页方案
    如何成为一名优秀的CTO(首席技术官)
    成为优秀程序员的10个有效方法
  • 原文地址:https://www.cnblogs.com/rax-/p/9932656.html
Copyright © 2011-2022 走看看