zoukankan      html  css  js  c++  java
  • 搜索:求已知前序、后序可得不同二叉树的棵数

    已知一棵二叉树的前序和后序遍历,不一定能重建唯一的二叉树呢?

    原因在于,当一个根只有一颗子树时,通过前序遍历和后序遍历,无法确定该子树是这个根的左子树还是右子树

    abdegcf,dgebfca

    单子树的个数通过判定前序除了第一个根节点a外其他字母的前一个字母

    和后序除了最后一个根结点a外其他字母的后一个字母是否相同求出

    求得单子树的个数n后即可得出棵数为2^n

     1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 
     5 int computeDiffTreeNum(string& str1, string& str2) {
     6     int count = 1;
     7     if (str1.length() <= 1) return 1;
     8     for (int i = 1; i < str1.length(); i++) {
     9         size_t posInStr2 = str2.find(str1[i]);
    10         if (str1[i - 1] == str2[posInStr2 + 1]) count *= 2;
    11     }
    12     return count;
    13 }
    14 
    15 int main(int argc, const char * argv[]) {
    16     using namespace std;
    17     string str1, str2;
    18     cin >> str1;
    19     cin >> str2;
    20     cout << computeDiffTreeNum(str1, str2);
    21     return 0;
    22 }

    再来一份代码:

     1 #include<stdio.h>
     2  
     3 #include<string.h>
     4  
     5 #define M 30
     6  
     7 int count=0;
     8  
     9 int power(int ans);
    10  
    11 int main()
    12  
    13 {
    14  
    15      char a[M],b[M];
    16     
    17      int i=0,j=0;
    18      
    19      int lengthA=0,lengthB=0;
    20     
    21      gets(a);
    22     
    23      gets(b);
    24     
    25      lengthA=strlen(a),lengthB=strlen(b);
    26     
    27      for(i=0;i<lengthA;i++)
    28     
    29       for(j=1;j<lengthB;j++)
    30     
    31        if(a[i]==b[j]&&a[i+1]==b[j-1])
    32     
    33         count++;
    34     
    35      printf("%d
    ",power(ans));
    36      return 0;
    37 }
    38  
    39 int power(int ans)
    40 {
    41     int sum=1;
    42     while(--ans>=0) sum*=2;
    43     return sum;
    44 }
  • 相关阅读:
    charles使用
    断言
    JDBC Request
    HTTP请求建立一个测试计划
    利用badboy进行脚本录制
    接口测试用例
    Monkey常用命令
    charles安装与使用
    celery配置与基本使用
    图片验证码接口
  • 原文地址:https://www.cnblogs.com/aininot260/p/9629679.html
Copyright © 2011-2022 走看看