完全二叉树的深度优先搜素
2015-12-06 20:53
211 查看
使用一个长度为N的数组,1<=N<=50,存储一棵完全二叉树。(二叉树中每个节点最多有两个子树称为左子树和右子树。完全二叉树是除最后一层外,每一层上的节点数均达到最大值;在最后一层上只缺少右边的若干节点。在数组中,如果以下标1为起始位置,那么每个节点的左儿子是其自己下标乘以2的节点,右儿子是自己下标乘以2加1的节点,即arr[i*2]和arr[i*2+1]是arr[i]的左右儿子。)然后使用左子树优先的深度优先搜索方法搜索一棵完全二叉树中的一个值为X的节点,最终输出其深度优先搜索的过程,如果一棵树中存在值相同的节点,以第一个被搜索到的为准然后结束。
本题目已给出main函数,需要以递归方式在头文件DFS.h中实现DFS函数,函数没有返回值,整个搜索过程的输出均在DFS函数中实现,函数有4个参数分别是:1、数组arr,2、数组长度N,3、下标位置pos,4、要被搜索的数字X。
输入:3行输入;第1行输入为长度N;第二行输入N个数字以空格间隔;第三行输入要搜索的数字X。
输出:深度搜索的过程,每个数字以空格间隔,最后一个数字后没有空格,以换行符“\n”结束。
Sample:
input:
20
16 73 22 56 86 84 37 50 83 60 18 18 48 44 70 77 52 72 23 95
18
output:
16 73 56 50 77 52 83 72 23 86 60 95 18
#include<stdio.h> #include<stdlib.h> #define max 50 int flog= 0; void DFS(int num[], int long, int a, int b) { <span style="white-space:pre"> </span>if(a>= long) { <span style="white-space:pre"> </span>return; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>if(x== num[a]) { <span style="white-space:pre"> </span>flog= 1; <span style="white-space:pre"> </span>printf("%d\n", num[a]); <span style="white-space:pre"> </span>return; <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>printf("%d ", num[a]); <span style="white-space:pre"> </span>if(flog== 0) { <span style="white-space:pre"> </span>DFS(num, long, 2*a, x); <span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>if(fiog== 0) { <span style="white-space:pre"> </span>DFS(num, long, 2*a+1, x); <span style="white-space:pre"> </span>} } int main() { int leng = 0; int arr[max] = {0}; int i; int X = 0; scanf("%d", &leng); for (i = 0; i < leng; i++) { scanf("%d", &arr[i]); } scanf("%d", &X); DFS(arr, leng, 0, X); return 0; }
相关文章推荐
- HDU 2181 哈密顿绕行世界问题(DFS 深度优先搜素)
- red and black 深度优先搜素(算法)
- Oil Deposits (poj 1241) 搜索 (深度优先搜素)
- C语言——NOIP2002:选数(深度优先搜素)
- 深度优先搜素 迷宫
- dfs(深度优先搜素)poj1088
- 树与二叉树的深度优先与广度优先算法(递归与非递归)
- leetcode 698. Partition to K Equal Sum Subsets K个相等子集 + 深度优先搜索DFS
- 关于文件目录线程级深度优先搜索效率的研究
- 深度优先搜索DFS
- 图 深度优先遍历 广度优先遍历 非递归遍历 图解算法过程
- 深度优先搜索和广度优先搜索
- 图的邻接矩阵存储 深度优先遍历 广度优先遍历 C语言实现
- 图的广度和深度优先遍历
- 人工智能搜索算法(深度优先、迭代加深、一致代价、A*搜索)
- 深度优先搜索
- PAT A1079 Total Sales of Supply Chain供应链总销售额 [树的遍历 深度优先]
- AOJ 0033 深度优先搜索
- MATLAB实现寻路、布线、迷宫的递归深度优先遍历算法_动画演示
- 深度优先搜索DFS例题--棋盘问题题解(参考写的)