手机
当前位置:查字典教程网 >编程开发 >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++中返回指向函数的指针示例

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

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

浅析C++中模板的那点事

C++虚析构函数的使用分析

short与int转换的小例子

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

C++中抽象类和接口的区别介绍

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

C数据结构之双链表详细示例分析

精品推荐
分类导航