typedef struct dt {
.....;
} Data;
typedef struct nd {
int id;
Data *data;
struct tm *_parent;
struct tm *_child[7];
} Node;
Node* findNode(int id, Node *tree) {
Node *p = tree;
if (id == p->_id)
return p;
for (int i = 0; i < 7; i++) {
if (id == p->_child[i]->_id) {
p = p->_child[i];
break;
} else if(p->_child[i] != NULL) {
findNode(id, p->_child[i]);
}
}
return p;
}
すべてのノードが 0 ~ 7 の子で構成される多方向ツリーがあります。子は順不同で追加および削除できます。指定された ID がツリーを検索し、特定のノードへのポインターを返す検索アルゴリズムを構築しようとしています。上記のように再帰的に実行しようとしましたが、あまり運がありませんでした。このアルゴリズムを再帰的に構築することは実際に可能ですか、それともスタックを使用する必要がありますか?