【发布时间】:2016-05-13 11:49:56
【问题描述】:
我有一个以这种方式组成的 n 元树:
struct n_tree{
struct list *adj;
};
struct list{
struct n_tree *child;
struct list *next;
int key;
};
如何搜索项目? 我已经实现了这个功能,但是它不起作用...谢谢!
struct list *find(struct list *root, int key){
if(root){
find(root->next,key);
if (root != NULL){
if(root->key == key){
return root;
}
else if(root->child != NULL){
return find(root->child->adj,key);
}
}
}
}
【问题讨论】:
-
如何在
n节点之间分割键范围?我的意思是,使用二叉树很简单:key下方的所有内容都向左,其他所有内容都在右侧。但是使用n元素就不太清楚了。 -
您进行了递归调用
find(root->next,key);,但从不使用返回的结果。那你为什么打这个电话? -
你说你有一个'以这种方式组成的树',但实际上你没有显示任何'way'。您刚刚展示了数据结构,但没有解释它们的含义:列表是否以某种方式排序?与
next链接的列表中keys 之间的关系是什么?列表项中的key与child子树中的child之间的关系是什么? -
因为我需要使用返回递归调用来访问树。
-
节点不排序,一个父节点由一个子节点列表组成,列表的第一个节点是父节点的第一个子节点
标签: c tree tree-search