满意答案

wjoltz
2013.11.01

采纳率:59% 等级:12
已帮助:6661人
typedef struct node{
int val; //值
int nc; //子节点个数
struct node * child[16]; //存储子节点指针,假设最大不超过16个
} node;
node *search(node *root,int var) //指定搜索起始根节点和欲搜索的值,返回找到节点的指针
{
int i;
node *t;
if(!root) //若根节点为空,没什么好说的,返回空
return null;
if(root->val==var) //如果根节点满足要求,直接返回
return root;
for(i=0;i
{
t=search(root->child[i],var);
if(t) //在第i棵子树下搜到了,返回找到的节点,否则继续for循环,搜下一棵子树
return t;
}
return null; //所有子树都搜不到,返回空
}
这其实是一个深度优先搜索的过程,用递归实现,代码简洁有效
其实原理和二叉树是一样的,二叉树其实就是nc最大为2的情况,二叉树的先左后右其实就是i的从0到1
00分享举报
本文介绍了一种使用深度优先搜索(DFS)的方法来在一个特殊的树结构中查找特定值。该树结构允许每个节点最多有16个子节点,并通过递归方式实现了搜索过程。
7371

被折叠的 条评论
为什么被折叠?



