0.这是一道利用中序遍历和后序遍历确定二叉树的题目,学会建树

关键点理解这段代码

int build(int L1,int R1,int L2,int R2)
{
    //printf("built:\n");
    ;//空树
    int root=post_order[R2];
    int p=L1;
    while(in_order[p] != root) p++;
    int  cnt = p-L1;//左子树的结点个数
    lch[root]=build(L1,p-,L2,L2+cnt-);
    rch[root]=build(p+,R1,L2+cnt,R2-);
    return root;
}

1.剩下的就是递归了 注意一下递归边界是  到达叶子结点 即左右子树均为空的结点 就行了

 if(!lch[v] && !rch[v])
 #include <cstdio>
 #include <iostream>
 #include <cstring>
 #include <sstream>
 #include <algorithm>
 using namespace std;
  + ;
 int post_order[maxn],in_order[maxn],lch[maxn],rch[maxn];
 int n,ans_sum,ans_v;

 bool input(int*a)
 {
     string s;
     //getline(cin,s);
     if(!getline(cin,s)) return false;
     stringstream ss(s);
     n=;
     int x;
     while(ss>>x) a[n++]=x;
     ;
 }

 int build(int L1,int R1,int L2,int R2)
 {
     //printf("built:\n");
     ;//空树
     int root=post_order[R2];
     int p=L1;
     while(in_order[p] != root) p++;
     int  cnt = p-L1;//左子树的结点个数
     lch[root]=build(L1,p-,L2,L2+cnt-);
     rch[root]=build(p+,R1,L2+cnt,R2-);
     return root;
 }
 void dfs(int v,int sum)
 {
     sum+=v;
     if(!lch[v] && !rch[v])
     {
         if(sum < ans_sum)
             ans_sum = sum,ans_v=v;
         else if(sum == ans_sum && v < ans_v)
             ans_v = v;
     }
     if(lch[v]) dfs(lch[v],sum);
     if(rch[v]) dfs(rch[v],sum);
 }
 int  main()
 {
     while(input(in_order))
     {
         input(post_order);
         build(,n-,,n-);
         ans_sum=;
         dfs(post_order[n-],);
         printf("%d\n",ans_v);
     }
     ;
 }

Uva 548 Tree的更多相关文章

  1. UVA.548 Tree(二叉树 DFS)

    UVA.548 Tree(二叉树 DFS) 题意分析 给出一棵树的中序遍历和后序遍历,从所有叶子节点中找到一个使得其到根节点的权值最小.若有多个,输出叶子节点本身权值小的那个节点. 先递归建树,然后D ...

  2. UVa 548 Tree(二叉树最短路径)

    You are to determine the value of the leaf node in a given binary tree that is the terminal node of ...

  3. UVa 548 Tree (建树+前序后序)

    Description You are to determine the value of the leaf node in a given binary tree that is the termi ...

  4. UVa 548 Tree【二叉树的递归遍历】

    题意:给出一颗点带权的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小. 学习的紫书:先将这一棵二叉树建立出来,然后搜索一次找出这样的叶子结点 虽然紫书的思路很清晰= =可是理解起来好困 ...

  5. UVA 548 Tree 建树

    题意: 输入中序和后序的权值,输出哪个叶子使它到根的路径上权和最小. 思路: 输入后建树,然后dfs求最小的叶子. #include<iostream> #include<cstdi ...

  6. uva 548 Tree(通过后序,先序重建树+dfs)

    难点就是重建树,指针參数的传递今天又看了看.应该是曾经没全然弄懂.昨天真没效率,还是不太专心啊.以后一定得慢慢看.不能急躁,保持寻常心,. 分析: 通过兴许序列和中序序列重建树,用到了结构体指针.以及 ...

  7. UVA - 548 Tree(二叉树的递归遍历)

    题意:已知中序后序序列,求一个叶子到根路径上权和最小,如果多解,则叶子权值尽量小. 分析:已知中序后序建树,再dfs求从根到各叶子的权和比较大小 #include<cstdio> #inc ...

  8. UVa 548 Tree(中序遍历+后序遍历)

    给一棵点带权(权值各不相同,都是小于10000的正整数)的二叉树的中序和后序遍历,找一个叶子使得它到根的路径上的权和最小.如果有多解,该叶子本身的权应尽量小.输入中每两行表示一棵树,其中第一行为中序遍 ...

  9. Tree UVA - 548 已知中序遍历和后序遍历,求这颗二叉树。

    You are to determine the value of the leaf node in a given binary tree that is the terminal node of ...

随机推荐

  1. backup daily

    #!/bin/bash # #This is a test in book.thanks for Richard Blum. #Please put this file to crontab,than ...

  2. 【leetcode】Binary Tree Level Order Traversal I & II

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  3. XML 数据请求与JSON 数据请求

    (1)XML 数据请求 使用 AFNetworking 中的 AFHTTPRequestOperation 和 AFXMLParserResponseSerializer,另外结合第三方框架 XMLD ...

  4. stdafx.h的作用

    // stdafx.h : include file for standard system include files,// or project specific include files th ...

  5. iOS 动态计算文本内容的高度

    关于ios 下动态计算文本内容的高度,经过查阅和网上搜素,现在看到的有以下几种方法: 1. //  获取字符串的大小  ios6 - (CGSize)getStringRect_:(NSString* ...

  6. chaper3_exerise_UVa455_周期串

    #include<iostream> #include<cstring> #include<stdio.h> using namespace std; ; int ...

  7. React Native实例

    本文主要包括以下内容 View组件的实例 Text组件实例 Navigator组件实例 TextInput组件实例 View组件的实例 效果如下 代码如下 /** * Sample React Nat ...

  8. FastPolice项目总结

    This is the final homework for spatial information Mobile Service Lesson.It generally inclusived the ...

  9. phpcms 标签

    都说pc标签{pc:content参数名="参数值"参数名="参数值"参数名="参数值"} 但是 参数名对应的具体参数值有那些,菜鸟就不知道 ...

  10. sdut 487-3279【哈希查找,sscanf ,map】

    487-3279 Time Limit: 2000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 题目链接: sdut:   http://acm.sdut.ed ...