手机
当前位置:查字典教程网 >编程开发 >C语言 >树形结构的3中搜索方式示例分享
树形结构的3中搜索方式示例分享
摘要:复制代码代码如下:/**树的3中常见搜索方式1.二叉树方式(每一层只有0和1)2.满m叉树(每一层都有0到m-1)3.子集树,也称为全排列树...

复制代码 代码如下:

/**

树的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;

}

【树形结构的3中搜索方式示例分享】相关文章:

C++标准模板库函数sort的那些事儿

c语言全盘搜索指定文件的实例代码

判断给定的图是不是有向无环图实例代码

C++二叉树结构的建立与基本操作

浅析多维数组的下标重载

c语言中if 语句的作用范围示例代码

浅析C++中结构体的定义、初始化和引用

short与int转换的小例子

浅谈C语言中结构体的初始化

c语言中static的用法详细示例分析

精品推荐
分类导航