题意: 同时给两个序列,分别是二叉树的中序遍历和后序遍历,求出根节点到叶子结点路径上的权值最小和 的那个 叶子节点的值,若有多个最小权值,则输出最小叶子结点的和。

想法: 一开始想着建树,但是没有这样建过,周赛题又出了一遍,没办法,后来尝试了一下,真的建出来了,也不难。

建树--->遍历二叉树----->over

注意: 这里必须是多组输入,否则就错了,记得吸收空格。

关于 先序遍历  根左右        后序遍历   左右根    中序遍历 左根右

遇到了几道 关于遍历的题,有点小体会,一般都是给出两种遍历结果,建树 或者 求另一种遍历顺序,但是每次都给出来中序遍历(没遇到过不给的,遇到了再说) 不管怎样,最重要的是(通过前序或者后序)找出根节点,然后(通过中序)分清左右子树是哪段区间,用指针来做 很方便,指向根节点就好。

看代码:

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int a[10010],b[10010];
char s[10010];
struct node
{
int val;
node *lch,*rch;
};
struct qq
{
int val,leave;
} q[10100];
node *dfs(int *p1,int *p2,int n)传入中序首地址 后序的跟节点地址 中序数组长度
{
if(n<=0)
return NULL;
int i;
for(i=0; p2[0]!=p1[i]; i++);
node *q= new node;
q->val=p2[0]; q->rch=dfs(p1+i+1,p2-1,n-i-1); // 右 两个函数可以倒过来,无所谓
q->lch=dfs(p1,p2-n+i,i);//左 return q;
}
bool cmp(qq a,qq b)
{
if(a.val!=b.val)
return a.val<b.val;
return a.leave<b.leave;
}
int ww;
void found(node *p,int sum)//先序遍历二叉树
{
if(p==NULL)
return ;
sum+=p->val;
if(p->lch==NULL&&p->rch==NULL)
{
q[ww].val=sum;
q[ww++].leave=p->val;//储存路径值 和 叶子结点 值
//return ;
}
found(p->lch,sum);
found(p->rch,sum);
}
int main()
{
while(gets(s))//必须多组输入,注意吸收回车
{
ww=0;
int k=0,w=0;
for(int i=0; s[i]!='\0'; i++)
{
if(s[i]==' ')
{
a[w++]=k;
k=0;
}
else
k=k*10+s[i]-'0';
}
a[w++]=k;
for(int i=0; i<w; i++)
scanf("%d",&b[i]);
getchar();
node *p=dfs(a,b+w-1,w);
found(p,0);
sort(q,q+ww,cmp);
printf("%d\n",q[0].leave);
}
return 0;
}

UVA - 548 根据中序遍历和后序遍历建二叉树(关于三种遍历二叉树)的更多相关文章

  1. PTA 二叉树的三种遍历(先序、中序和后序)

    6-5 二叉树的三种遍历(先序.中序和后序) (6 分)   本题要求实现给定的二叉树的三种遍历. 函数接口定义: void Preorder(BiTree T); void Inorder(BiTr ...

  2. 基于Java的二叉树的三种遍历方式的递归与非递归实现

    二叉树的遍历方式包括前序遍历.中序遍历和后序遍历,其实现方式包括递归实现和非递归实现. 前序遍历:根节点 | 左子树 | 右子树 中序遍历:左子树 | 根节点 | 右子树 后序遍历:左子树 | 右子树 ...

  3. C++编程练习(8)----“二叉树的建立以及二叉树的三种遍历方式“(前序遍历、中序遍历、后续遍历)

    树 利用顺序存储和链式存储的特点,可以实现树的存储结构的表示,具体表示法有很多种. 1)双亲表示法:在每个结点中,附设一个指示器指示其双亲结点在数组中的位置. 2)孩子表示法:把每个结点的孩子排列起来 ...

  4. 非递归实现二叉树的三种遍历操作,C++描述

    body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ...

  5. 谈谈vector容器的三种遍历方法

    说明:本文仅供学习交流.转载请标明出处.欢迎转载!          vector容器是最简单的顺序容器,其用法相似于数组.实际上vector的底层实现就是採用动态数组.在编敲代码的过程中.经常会变量 ...

  6. lintcode: 中序遍历和后序遍历树构造二叉树

    题目 中序遍历和后序遍历树构造二叉树 根据中序遍历和后序遍历树构造二叉树 样例 给出树的中序遍历: [1,2,3] 和后序遍历: [1,3,2] 返回如下的树: 2 /  \ 1    3 注意 你可 ...

  7. java编写二叉树以及前序遍历、中序遍历和后序遍历 .

    /** * 实现二叉树的创建.前序遍历.中序遍历和后序遍历 **/ package DataStructure; /** * Copyright 2014 by Ruiqin Sun * All ri ...

  8. python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)

    python数据结构之树和二叉树(先序遍历.中序遍历和后序遍历) 树 树是\(n\)(\(n\ge 0\))个结点的有限集.在任意一棵非空树中,有且只有一个根结点. 二叉树是有限个元素的集合,该集合或 ...

  9. 根据 中序遍历 和 后序遍历构造树(Presentation)(C++)

    好不容易又到周五了,周末终于可以休息休息了.写这一篇随笔只是心血来潮,下午问了一位朋友PAT考的如何,顺便看一下他考的试题,里面有最后一道题,是关于给出中序遍历和后序遍历然后求一个层次遍历.等等,我找 ...

随机推荐

  1. [工具] Docker安装及portainer GUI

    一.Docker Engine安装 1.安装流程 1)移除旧版本(如果有旧版本) yum remove docker \ docker-client \ docker-client-latest \ ...

  2. 拿到webshell之后的事情

    之前搞站都是搞到后台管理员,或者搞到webshell就宣布结束了,,今天终于有机会学习一下后面的操作了. 公司网站为php的站,已经拿到webshell.可以进行菜刀连接. 菜刀虚拟终端 php -m ...

  3. LeetCode--二叉树1--树的遍历

    LeetCode--二叉树1--树的遍历 一 深度遍历 深度遍历里面由 三种遍历方式,两种实现方法.都要熟练掌握. 值得注意的是,当你删除树中的节点时,删除过程将按照后序遍历的顺序进行. 也就是说,当 ...

  4. TCP/IP协议族的四个层次

    OSI7层模型的小结 : 在7层模型中,每一层都提供一个特殊的网络功能.从网络功能的角度看:下面4层(物理层.数据链路层.网络层和传输层)主要提供数据传输和交换功能,即以节点到节点之间的通信为主:第4 ...

  5. 响应式导航菜单(css+js)

    1.响应式导航菜单 先来看下效果图把: 当视口大于640px的时候,导航条会显示在外,当视口小于768px的时候,导航菜单需要隐藏起来!代码如下: <!doctype html> < ...

  6. 数据挖掘入门系列教程(二)之分类问题OneR算法

    数据挖掘入门系列教程(二)之分类问题OneR算法 数据挖掘入门系列博客:https://www.cnblogs.com/xiaohuiduan/category/1661541.html 项目地址:G ...

  7. js的变量——基本类型保存在栈中,引用类型保存在堆中

    javascript的基本类型:Undefined,Null,Boolean,Number,String 引用类型:Object,Array,Function 基本类型值在内存中占据固定大小,被保存在 ...

  8. 盘点Linux运维常用工具(二)-web篇之nginx

    1.nginx的概述 .nginx是一个开源的.支持高性能.高并发的WWW服务和代理服务软件 .是由俄罗斯人Igor Sysoev开发的,具有高并发.占用系统资源少等特性 .官网:http://ngi ...

  9. .net core WebAPI+EF 动态接收前台json,并动态修改数据库

    用API开发的人都知道,常用的后台接收参数就是建个DTO,然后前台把这个DTO传过来.后台再更新,例如如下例子: public async Task<IActionResult> PutM ...

  10. jQuery插件select2跨域设置xhrFields参数

    ajax跨越时默认不带cookie,如果需要带cookie调用,需要设置参数 xhrFields: { withCredentials: true },如: $.ajax({url : "h ...