满意答案
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分享举报