1127. ZigZagging on a Tree (30)

简介: #include #include #include using namespace std;int n;const int maxn = 31;struct node { int data; node *l,...
#include <iostream>
#include <vector>
#include <queue>
using namespace std;

int n;
const int maxn = 31;
struct node { int data; node *l, *r;};
vector<int> post(maxn), in(maxn), ans, lnum(maxn);

node* build(int postL, int postR, int inL, int inR){//根据后序和中序建树
    if(postL > postR) return NULL;
    node *root = new node;
    root->data = post[postR];
    int k;
    for (k = inL; k <= inR; k++)
        if(in[k] == post[postR]) break;
    int numLeft = k - inL;
    root->l = build(postL, postL + numLeft - 1, inL, k - 1);
    root->r = build(postL + numLeft, postR - 1, k + 1, inR);
    return root;
}
void dfs(node *root, int depth){//求每一层的个数
    if (root == NULL) return;
    lnum[depth]++;
    if(root->l != NULL) dfs(root->l, depth + 1);
    if(root->r != NULL) dfs(root->r, depth + 1);
}
void bfs(node *root){//层序遍历的结果存在ans中
    queue<node*> q;
    q.push(root);
    while (!q.empty()) {
        node *now = q.front();
        q.pop();
        ans.push_back(now->data);
        if(now->l) q.push(now->l);
        if(now->r) q.push(now->r);
    }
}

int main(){
    cin >> n;
    for(int i = 0; i < n; i++) cin >> in[i];
    for(int i = 0; i < n; i++) cin >> post[i];
    node *root = build(0, n - 1, 0, n - 1);
    dfs(root, 0);
    bfs(root);
    //z输出
    int cnt = 0;
    printf("%d", ans[cnt++]);
    for (int i = 1; i < maxn;) {
        if (i % 2) {
            for (int j = 0; j < lnum[i]; j++)
                printf(" %d", ans[cnt+j]);
            cnt = cnt + lnum[i];
            i++;
        }else{
            for (int j = lnum[i] - 1; j >= 0; j--)
                printf(" %d", ans[cnt+j]);
            cnt = cnt + lnum[i];
            i++;
        }
    }
    cout << endl;

    return 0;
}
目录
相关文章
|
监控 数据可视化 前端开发
高效管理团队表现:构建可视化的贡献度面板组件
高效管理团队表现:构建可视化的贡献度面板组件
241 0
|
存储 缓存 异构计算
大语言模型量化方法对比:GPTQ、GGUF、AWQ
在过去的一年里,大型语言模型(llm)有了飞速的发展,在本文中,我们将探讨几种(量化)的方式,除此以外,还会介绍分片及不同的保存和压缩策略。
5493 0
|
8月前
|
机器学习/深度学习 API
DeepSeek模型压缩与加速
随着深度学习模型规模增大,推理速度和资源消耗成为关键问题。DeepSeek提供多种模型压缩与加速工具,包括剪枝、量化、知识蒸馏和结构优化,帮助在保持性能的同时大幅降低计算资源需求。本文详细介绍这些技术及其代码实现,涵盖模型剪枝、量化、知识蒸馏及结构优化的方法,并提供常见问题的解决方案,助你掌握高效推理技巧。
|
8月前
|
存储 安全 数据安全/隐私保护
STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
本文介绍了基于STM32的Customer BootLoader刷新项目的第一部分:使用STM32CubeMX搭建UART串口通信工程。项目采用正点原子探索者v2开发板,通过USB串口与上位机通信,实现固件刷新功能。主要内容包括: 1. 硬件原理图介绍:详细描述了开发板的串口连接方式及电路图。 2. STM32CubeMX工程搭建:从创建新工程、配置系统时钟、USART串口设置到生成代码,一步步详细说明。 3. 代码编写:展示了如何使用HAL库实现串口接收和发送数据,并提供了main.c的完整代码。 4. 工程下载和调试:编译并下载工程到开发板,通过串口调试助手验证通信功能。
STM32 Customer BootLoader 刷新项目 (一) STM32CubeMX UART串口通信工程搭建
|
12月前
|
Web App开发 安全 Java
Debian 12.7 推出安全性和稳定性改进
【10月更文挑战第16天】
472 3
Debian 12.7 推出安全性和稳定性改进
|
8月前
|
人工智能 Linux 开发工具
Kiln AI:零代码实现微调模型!自动生成合成数据与微调模型的开源平台
Kiln AI 是一款开源的 AI 开发工具,支持零代码微调多种语言模型,生成合成数据,团队协作开发,自动部署。帮助用户快速构建高质量的 AI 模型。
1474 8
Kiln AI:零代码实现微调模型!自动生成合成数据与微调模型的开源平台
|
存储 Linux API
深入理解Linux虚拟内存管理(一)3
深入理解Linux虚拟内存管理(一)
311 1
|
12月前
|
数据采集 自然语言处理 文字识别
92页的llama 3.1技术报告,我替你们啃下来了
作者花了半个月时间,认真读完了llama 3.1技术报告,并总结成本文,希望能帮到对这个感兴趣的小伙伴们。
92页的llama 3.1技术报告,我替你们啃下来了
|
11月前
|
存储 人工智能 数据挖掘
通义灵码的隐私保护机制
在数字化时代,用户隐私保护至关重要。通义灵码作为先进的AI代码生成工具,通过数据加密、匿名化处理及符合GDPR与CCPA等隐私法规的代码生成,有效保护用户隐私,降低法律风险,增强用户信任,促进业务发展。
通义灵码的隐私保护机制
|
11月前
|
存储 小程序 API
深入调查研究Memos
【11月更文挑战第1天】
239 7