L2-006. 树的遍历

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h> struct node
{
long left,right;
}tree[]; long a[],b[]; void work(long l,long r,long p,long q,long fa,long cond)
{
long root=a[r],pos;
for (pos=p;pos<=q;pos++)
if (b[pos]==root)
break;
if (cond==)
tree[fa].left=root;
else
tree[fa].right=root;
if (p<=pos-)
work(l,l+pos--p,p,pos-,root,);
if (pos+<=q)
work(l+pos-p,r-,pos+,q,root,);
} int main()
{
long i,head,tail,n;
long q[];
scanf("%ld",&n);
for (i=;i<=n;i++)
{
scanf("%ld",&a[i]);
tree[a[i]].left=;
tree[a[i]].right=;
}
for (i=;i<=n;i++)
scanf("%ld",&b[i]);
work(,n,,n,,); head=;
tail=;
q[]=a[n];
while (head<tail)
{
head++;
printf("%ld",q[head]);
if (tree[q[head]].left!=)
{
tail++;
q[tail]=tree[q[head]].left;
}
if (tree[q[head]].right!=)
{
tail++;
q[tail]=tree[q[head]].right;
}
if (head!=tail)
printf(" ");
}
return ;
}

L2-011. 玩转二叉树

 #include <stdio.h>
#include <stdlib.h> struct node
{
long left,right;
}tree[]; long a[],b[],q[]; void work(long x,long y,long p,long q,long father,long cond)
{
long pos,count;
if (father!=)
{
if (cond==)
tree[father].left=b[p];
else
tree[father].right=b[p];
}
for (pos=x;pos<=y;pos++)
if (a[pos]==b[p])
break;
count=pos-x;
if (count>)
work(x,pos-,p+,p+count,b[p],);
if (y-pos>)
work(pos+,y,p+count+,q,b[p],);
} void change(long d)
{
if (tree[d].left== && tree[d].right==)
return ;
long temp;
temp=tree[d].left;
tree[d].left=tree[d].right;
tree[d].right=temp;
change(tree[d].left);
change(tree[d].right);
} int main()
{
long n,i,head,tail;
scanf("%ld",&n);
for (i=;i<=n;i++)
scanf("%ld",&a[i]); //mid
for (i=;i<=n;i++)
scanf("%ld",&b[i]); //pre
for (i=;i<=n;i++)
{
tree[i].left=;
tree[i].right=;
}
work(,n,,n,,);
change(b[]); head=; tail=;
q[]=b[];
while (head<tail)
{
head++;
printf("%ld",q[head]);
if (tree[q[head]].left!=)
{
tail++;
q[tail]=tree[q[head]].left;
}
if (tree[q[head]].right!=)
{
tail++;
q[tail]=tree[q[head]].right;
}
if (head!=tail)
printf(" "); //output不能多余的空格
}
return ;
}

团体程序设计天梯赛 L2-006. 树的遍历 L2-011. 玩转二叉树的更多相关文章

  1. 树状数组+二分答案查询第k大的数 (团体程序设计天梯赛 L3-002. 堆栈)

    前提是数的范围较小 1 数据范围:O(n) 2 查第k大的数i:log(n)(树状数组查询小于等于i的数目)*log(n)(二分找到i) 3 添加:log(n) (树状数组) 4 删除:log(n) ...

  2. 团体程序设计天梯赛(CCCC) L3009 长城 方法证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  3. 团体程序设计天梯赛(CCCC) L3021 神坛 的一些错误做法(目前网上的方法没一个是对的) 和 一些想法

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  4. 团体程序设计天梯赛(CCCC) L3019 代码排版 方法与编译原理密切相关,只有一个测试点段错误

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  5. 团体程序设计天梯赛(CCCC) L3015 球队“食物链” 状态压缩

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  6. 团体程序设计天梯赛(CCCC) L3014 周游世界 BFS证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  7. 团体程序设计天梯赛(CCCC) L3013 非常弹的球 不同思路

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code

  8. 团体程序设计天梯赛(CCCC) L3012 水果忍者 上凸或下凹的证明

    团体程序设计天梯赛代码.体现代码技巧,比赛技巧.  https://github.com/congmingyige/cccc_code #include <cstdio> #include ...

  9. PTA L2-001 紧急救援-最短路(Dijkstra)多条最短路找最优解并输出路径 团体程序设计天梯赛-练习集

    L2-001 紧急救援 (25 分)   作为一个城市的应急救援队伍的负责人,你有一张特殊的全国地图.在地图上显示有多个分散的城市和一些连接城市的快速道路.每个城市的救援队数量和每一条连接两个城市的快 ...

  10. PTA|团体程序设计天梯赛-练习题目题解锦集(C/C++)(持续更新中……)

    PTA|团体程序设计天梯赛-练习题目题解锦集(持续更新中) 实现语言:C/C++:      欢迎各位看官交流讨论.指导题解错误:或者分享更快的方法!! 题目链接:https://pintia.cn/ ...

随机推荐

  1. linux磁盘扩容日志

    //针对ext4文件格式的操作系统(如CentOS6):// umount /dev/vdb e2fsck -f /dev/vdb resize2fs /dev/vdb mount /dev/vdb ...

  2. python数据分析画图体验

    对于numpy的函数,pands等,不是很熟,我来copy一下code,敲击一下,找找感觉. 默认的导入包import numpy as npimport matplotlib.pyplot as p ...

  3. gulp-babel 阻止了js文件编译的进程?

    现象 :   编译打包的js没有输出到目标文件夹里,只是单单的生成了一个目标目录,目录里没有文件 解决方法:gulp-babel ^8.0.0 使用了 ^7.0.1的 依赖插件.统一gulp-babe ...

  4. NetFPGA-SUME下reference_nic测试

    Reference_nic Reference_nic是NetFPGA-SUME中提供的一个参考Demo,本文主要介绍如何构建并在SUME上运行reference_nic. GIT源 git clon ...

  5. 15_常用API_第15天(Object、String、StringBuffer、用户登陆注册)_讲义

    今日内容介绍 1.Object 2.String 3.StringBuilder 01API概念 A:API(Application Programming Interface) 应用程序编程接口 B ...

  6. ReentrantLock 和 Condition的使用

    ReentrantLock  ReentrantLock可以等同于synchronized使用. ReentrantLock 类实现了Lock ,它拥有与 synchronized 相同的并发性和内存 ...

  7. NodeJs异步的执行过程

    我这里写了一个代码片段,用来模拟一个嵌套的异步过程,下面我总结了下这段代码的执行顺序var fs = require("fs"); fs.stat('a.txt',callback ...

  8. cxgrid中,如何根据列名或字段名取得footer值

    注意,不是根据index取得footer值cxgrdtbv1.DataController.Summary.FooterSummaryValues[0]; ------解决方案------------ ...

  9. linux创建账户并自动生成主目录和主目录下的文件

    # useradd -d /home/test -m test; 然后给test设置密码. # passwd test; 1. useradd 添加用户或更新新创建用户的默认信息 语法:useradd ...

  10. MicrosoftFixit50688 [Windows7事件ID10,WMI错误的解决方法

     Windows7事件记录中有如下错误提示: "Event filter with query "SELECT * FROM __InstanceModificationEve ...