树形结构的3种搜索方式示例分享
来源:互联网 发布:软件质量保证报告 编辑:程序博客网 时间:2024/06/05 23:59
树形结构在各项大赛中成为必备的知识之一,尤其是建立在树形结构基础上的搜索算法!
代码:
/**树的3种常见搜索方式1.二叉树方式(每一层只有0和1)2.满m叉树(每一层都有0 到m - 1)3.子集树,也称为全排列树*/#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <string>using namespace std;const int M = 20;int n, m;int ans[M];//二叉树void dfs_two(int cur){ if(cur == n){ for(int i = 0; i < n; i++){ cout << ans[i] << " "; } cout << endl; return; } ans[cur] = 1; dfs_two(cur + 1); ans[cur] = 0; dfs_two(cur + 1);}//m叉树void dfs_m(int cur){ if(cur == n){ for(int i = 0; i < n; i++){ cout << ans[i] << " "; } cout << endl; return ; } for(int i =0; i < n; i++){ ans[cur] = i; dfs_m(cur + 1); }}bool vis[M];//子集树void dfs_sub(int cur){ if(cur == n){ for(int i = 0; i < n; i++){ cout << ans[i] << " "; } cout << endl; return; } for(int i = 0; i < n; i++){ if(false == vis[i]){ vis[i] = true; ans[cur] = i; dfs_sub(cur + 1); vis[i] = false; } }}int main(){ n = 5; memset(ans, -1, sizeof(ans)); memset(vis, false, sizeof(vis)); dfs_two(0);//二叉树搜索 dfs_m(0);//满m叉树搜索 dfs_sub(0);//子集树搜索 return 0;}
阅读全文
0 0
- 树形结构的3种搜索方式示例分享
- 树形结构目录的构造方式
- 树形结构数据库的保存方式(mysql)
- 使用递归的方式显示树形结构
- poj 2023 Choose Your Own Adventure 树形结构的搜索
- 【mysql】mysql搜索所有树形结构的节点
- 树形结构 数据组织方式
- php:树形结构的算法3
- 树形结构的实现
- 树形结构的实现
- 树形结构的定位
- 伟大的树形结构
- 树形结构的cms
- 树形结构的实现
- 树形结构的使用
- js的 树形结构
- 使用dtree方式创建树形结构
- java实现遍历文件目录,并在控制台以树形结构展示搜索出来的文件
- null和“”,==和equals()的混用和区别
- 树莓派raspberry之samba
- HDOJ 1869 六度分离(floyd最短路~)
- 如何学习代码
- 在ubuntu14.04下openni+opencv+kinectV1的学习一:学习准备
- 树形结构的3种搜索方式示例分享
- BMP图像数据格式详解
- java中类的静态成员和实例成员
- 动态规划
- Android8.0运行时权限策略变化和适配方案
- 分布式ID生成方法
- Log4J使用说明书
- Fair-Play:The quick brown fox jumps over the lazy dog!
- 拓扑排序