当前位置: 首页 > news >正文

二叉树遍历

1.广度优先遍历

2.深度优先遍历

1.前序遍历

根结点--左子树--右子树

void pre(int p){printf("%d\n",p);if(tree[p].l)pre(tree[p].l);if(tree[p].r)pre(tree[p].r);
}

2.中序遍历

左子树--根结点--右子树

void in(int p){if(tree[p].l)in(tree[p].l);printf("%d\n",p);if(tree[p].r)in(tree[p].r);
}

3.后序遍历

左子树--右子树--根结点

void post(int p){if(tree[p].l)post(tree[p].l);if(tree[p].r)post(tree[p].r);printf("%d\n",p);
}

3.已知先中求后

P1827 [USACO3.4] 美国血统 American Heritage

#include<bits/stdc++.h>
using namespace std;
string a,b;
void dfs(int l,int r,int ql,int qr){for(int i=ql;i<=qr;i++){if(a[i]==b[l]){dfs(l+1,l+i-ql,ql,i-1);  //i-ql表示左子树长度dfs(l+i-ql+1,r,i+1,qr);cout<<b[l];}}
}
int main(){cin>>a>>b;dfs(0,a.length()-1,0,a.length()-1);return 0;
}

4.已知中后求先

P1030 [NOIP 2001 普及组] 求先序排列

反过来即可

#include<bits/stdc++.h>
using namespace std;
string a,b;
void dfs(int l,int r,int ql,int qr){for(int i=qr;i>=ql;i--){if(a[i]==b[r]){cout<<b[r];dfs(l,r-(qr-i)-1,ql,i-1);  dfs(r+i-qr,r-1,i+1,qr);}}
}
int main(){cin>>a>>b;dfs(0,a.length()-1,0,a.length()-1);return 0;
}

5.已知先后求中的可能个数

P1229 遍历问题

有n个只有一个子树的结点就有2^n种可能

输入例子:

前:abc

后:cba

若两个字母在前序与后序中位置相邻且相反,那便是一个单子树结点

因为前序是根左右

后序是左右根

若存在两个子树

那么相邻一定不一样

#include<bits/stdc++.h>
using namespace std;
string a,b; 
long long ans;
int main(){cin>>a>>b;int n=a.length();for(int i=0;i<=n-2;i++){for(int j=0;j<=n-1;j++){if(a[i]==b[j]&&a[i+1]==b[j-1])ans++;}}cout<<pow(2,ans);return 0;
}
http://www.wxhsa.cn/company.asp?id=5524

相关文章:

  • Python Socket网络编程(3)
  • 实用指南:有关gitlab14.x版本在内网环境下无法添加webhooks的解决方法
  • 强类型、类型安全
  • 完整教程:数据结构——逻辑结构物理结构
  • 前端面试
  • 外置Tomcat启动Springboot项目后,请求参数中文乱码的问题解决 - yjry
  • gradle项目多模块中主模块加载子模块中的sqlmapper文件方法
  • MCP - 使用 fastmcp 编写 Client 调用 MCP Serverr - Streamable HTTP (四)
  • 全面理解MySQL架构
  • Figma EX 125.7.5 UI原型设计
  • 基于WebSocket的命令与控制工具WSC2详解
  • LocalDateTime节日和平日在时间占比计算方法
  • JSON字符串转换List对象列表 JSONArray toJavaList
  • vue3 使用 docx-preview 预览 Word文档
  • 数据库原理-第三章——SQL
  • 啥是CPU
  • C# Avalonia 15- Animation- CodeAnimation
  • ubuntu 18.04安装mysql 8.0.41
  • Topaz Photo AI Pro 4.0.4 AI图片智能降噪(win版)
  • 阿里云基础设施 AI Tech Day AI 原生,智构未来——AI 原生架构与企业实践专场
  • 实用指南:LINUX910 CENTOS8 新建虚拟机;重设root密码/时间同步
  • 零基础学习PYthon记录
  • C++ std::unordered_set
  • 如何将一个项目同时提交到GitHub和Gitee(码云)上
  • 基于Matlab的LeNet-5车牌字符识别系统实现
  • MATLAB的交通标志牌识别实现
  • Python常见的数据结构和代码示例
  • Grafana 中文入门教程 | 构建你的第一个仪表盘
  • Gitee DevOps:中国开发者效率革命的数字引擎
  • Topaz Photo AI Pro 4.0.4 AI图片智能降噪