zoukankan      html  css  js  c++  java
  • 九度OJ 1385 重建二叉树

    题目地址:http://ac.jobdu.com/problem.php?pid=1385

    题目描述:

    输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列。

    输入:

    输入可能包含多个测试样例,对于每个测试案例,

    输入的第一行为一个整数n(1<=n<=1000):代表二叉树的节点个数。

    输入的第二行包括n个整数(其中每个元素a的范围为(1<=a<=1000)):代表二叉树的前序遍历序列。

    输入的第三行包括n个整数(其中每个元素a的范围为(1<=a<=1000)):代表二叉树的中序遍历序列。

    输出:

    对应每个测试案例,输出一行:

    如果题目中所给的前序和中序遍历序列能构成一棵二叉树,则输出n个整数,代表二叉树的后序遍历序列,每个元素后面都有空格。

    如果题目中所给的前序和中序遍历序列不能构成一棵二叉树,则输出”No”。

    样例输入:
    81 2 4 7 3 5 6 84 7 2 1 5 3 8 681 2 4 7 3 5 6 84 1 2 7 5 3 8 6
    样例输出:
    7 4 2 5 8 6 3 1 No

    采用递归重建二叉树

    #include <stdio.h>
    
    #define MAX 1000
    
    int to_post(int pre[], int in[], int post[], int n){
        int i;
        int flag1, flag2;
    
        if (n <= 0)
            return 1;
    
        for (i=0; i<n; ++i)
            if (in[i] == pre[0])
                break;
        if (i >= n)
        	return 0;
        post[n-1] = pre[0];
        flag1 = to_post (pre+1, in, post, i);
        flag2 = to_post (pre+i+1, in+i+1, post+i, n-i-1);
        return flag1 && flag2;
    }
    
    int main(void){
        int pre[MAX], in[MAX], post[MAX];
        int n, i;
    
        while (scanf ("%d", &n) != EOF){
            for (i = 0; i < n; ++i)
            	scanf("%d", &pre[i]);
            for (i = 0; i < n; ++i)
            	scanf("%d", &in[i]);
            if (to_post (pre, in, post, n)){
            	for (i = 0; i < n; ++i)
            		printf("%d ", post[i]);
            	putchar('
    ');
            }
            else
            	printf("No
    ");
        }
    
        return 0;
    }
    



  • 相关阅读:
    git提交代码到远程仓库github
    git报错记录
    关于VSCode的一些设置
    css之列表数据前加上小方框
    EChats使用报错之 《"TypeError: Cannot read property 'getAttribute' of undefined"》
    EChats使用之给图表加箭头以及渐变
    vue报错之(Do not use v-for index as key on <transition-group> children)
    在vue项目中使用mock模拟数据
    Vue项目中关于EChats的使用
    使用mock数据实现登录时的一次bug记录
  • 原文地址:https://www.cnblogs.com/liushaobo/p/4373742.html
Copyright © 2011-2022 走看看