手机
当前位置:查字典教程网 >编程开发 >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中搜索方式示例分享】相关文章:

深入理解goto语句的替代实现方式分析

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

关于c语言指针的两处小tip分享

C实现分子沉积模拟的示例代码

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

C与C++ 无参函数的区别解析

C语言栈顺序结构实现代码

c语言:基于函数指针的两个示例分析

C++中返回指向函数的指针示例

C与C++中结构体的区别

精品推荐
分类导航